一起养成写作习惯!这是我参与「日新方案 · 4 月更文应战」的第2天,点击查看活动概况。
前语
身为一个前端小菜鸟,总是有一个飞高飞远的愿望,因此,每点小生长,我都想要让它变得更有意义,为了自己,也为了更多值得的人
看到标题我们或许疑问了。。
正文
- 2022年了你还在用jq?
- 不同版别的jq,click事情还能冲突?
- 这也值得发一篇文章来嫖月更应战?
各位道友切勿慌张,窃听小阵娓娓道来–
缘由
由于小阵最近在搞油猴脚本,感兴趣的可以看我的temperMonkey插件初开发文章,由于涉及到操作dom,自然而然就引进了jq。
那为什么要引进不同版别的jq?
由于我设计油猴脚本的初衷是帮我快捷操作公司cms后台项目的一些常用页面。
比如刚进入到cms页面后台,我需求自动翻开cms模块办理
和cms页面办理
页面,并且由于每次改写页面之后之前翻开的tab页都会关闭,所以需求从头翻开。。
emmm,至于为什么,就要项目太老了,页面基本都是经过iframe
嵌套构成的,是的,你没有听错,是「数不胜数」
的iframe
,也因此页面每一次改写都会等若干秒
,比我们本地开发react或者vue编译一次等的时刻还要长的多。。
我们看到这儿或许会为我的作业内容感到稍稍的悲痛,是的,我很痛苦,但是并不能浇灭我爱折腾的心,这不已经开始折腾油猴脚本了吗,哈哈哈。。
言归正传,再问一遍,为什么引进不同版别的jq?
由于cms体系
自带有老版别的jq,多老呢?v 1.8.3
,而现在的jq版别是v 3.6.0
(天呐,多久没重构了呀😲),我也有这样的疑问。。
项目本身的jq,再加上老项目又内嵌了多个iframe
,嗯,很多的iframe
又带来了更多版别的jq。
比如:
- v1.8.3
- v2.2.7
- v1.9.2
- …
然后我这次运用的jq是v 3.5.1
。。算起来我家的cms体系真的是辛苦了。。emoing
说了这么多,总算进入了正文
详解
先描述我发现问题的进程:
我用jq获取了a标签,然后运用
$('.a:contains("cms模块办理")').click()
依照常理来说,会翻开新标签的吧,是的,如果不引进v 3.5.1
的jq的话可以正常翻开,然后为了防止jq版别的不同导致我也脚本平添了很多费事,我用引进的v 3.5.1
又执行了上面的代码,进行了相同的操作,然而现象是:没有现象
,是的,他一动不动
我反复试了多次,总算确认他便是一动没动。
我又查了一遍文档,心想莫非我这资深业务员还能搞不定jq??
翻了一波回来之后,确认代码没问题,那么是谁有问题?
跟上面的情况比照之后,明显的jq版别跟click事情的问题。
我回顾了下:
- 刚开始应该是用
v1.8.3
的jq用on事情绑定过click了 - 这个时分我运用
$('.a:contains("cms模块办理")').click()
是没问题的 - 然后我在
v1.8.3
绑定过click事情之后直接用v3.5.1
来调用$('.a:contains("cms模块办理")').click()
之后有了问题 - 或许是
v3.5.1
版别的click()
其实调用的是空方法
?,毕竟注册的时分运用v1.8.3
来注册的 - 那这样相同,直接取原生元素执行
click()
肯定是没问题的吧?
说干就干
将原来的方式改成用原生元素调用click
事情
$('.a:contains("cms模块办理")').get(0).click()
试验之后立马收效了,ok,明白了,原来真是jq版别的问题
水落石出之后心里舒服多了~~
结语
往期好文引荐「我不引荐下,我们或许就错过了史上最牛逼vscode插件集合
啦!!!(嘎嘎嘎~)😄」
- vscode最牛插件共享,只有你想不到,没有vscode办不到