一起养成写作习惯!这是我参与「日新方案 · 4 月更文应战」的第2天,点击查看活动概况。

前语

身为一个前端菜鸟,总是有一个飞高飞远的愿望,因此,每点小生长,我都想要让它变得更有意义,为了自己,也为了更多值得的人
看到标题我们或许疑问了。。

正文

疑问

  1. 2022年了你还在用jq?
  2. 不同版别的jq,click事情还能冲突?
  3. 这也值得发一篇文章来嫖月更应战?

各位道友切勿慌张,窃听小阵娓娓道来–

淡定

缘由

由于小阵最近在搞油猴脚本,感兴趣的可以看我的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事情的问题。

我回顾了下:

  1. 刚开始应该是用v1.8.3的jq用on事情绑定过click了
  2. 这个时分我运用$('.a:contains("cms模块办理")').click()是没问题的
  3. 然后我在v1.8.3绑定过click事情之后直接用v3.5.1来调用$('.a:contains("cms模块办理")').click()之后有了问题
  4. 或许是v3.5.1版别的click()其实调用的是空方法?,毕竟注册的时分运用v1.8.3来注册的
  5. 那这样相同,直接取原生元素执行click()肯定是没问题的吧?

说干就干
将原来的方式改成用原生元素调用click事情

$('.a:contains("cms模块办理")').get(0).click()

试验之后立马收效了,ok,明白了,原来真是jq版别的问题

水落石出之后心里舒服多了~~

舒服

结语

往期好文引荐「我不引荐下,我们或许就错过了史上最牛逼vscode插件集合啦!!!(嘎嘎~)😄」

  • vscode最牛插件共享,只有你想不到,没有vscode办不到