前述:jquery中: 当一个元素的点击事件被触发时,会自动将该事件向父级元素逐级专递。
但是实际场景当中,我们可能会遇到需要在父级元素中定义点击事件,来触发特定子元素的点击事件,我就遇到了这么一个问题。 但是这么做的后果,在jquery1.8.2版本及以后所有版本(截止目前最新版本为3.3),会出现事件来回传递的问题,最终导致无限循环。
在jquery1.2.6版本中,子元素的点击传递给父元素时,再被父元素传递回来后,事件就不会再向外扩散了,也就是低级版本jquery只会向外扩散一次,但是在最新版本却取消了这个限制,不知所以然。。。
解决方案也很简单:
1-不变更DOM结构的情况下,阻止子元素的事件向外扩散。 可以使用:window.event.stopPropagation();
2-将需要传递事件的父元素拆分到别处,即不让传递事件之间的两者形成父子元素关系即可。
3-删除事件传递,哪里点击哪里添加。
以下还原父子元素点击事件无限传递的示例:
<!DOCTYPE html> <html> <head> < src="https://code.jquery.com/jquery-3.3.1.min.js"></ > <!--< src="jquery.js"></ >--> </head> <body> <div id="a"> <a id="b">Test</a> </div> </body> </html> < > var i = 0; $("#a").click(function () { $("#b").click(); }); $("#b").click(function () { i++; alert(i); }); </ >
继续阅读与本文标签相同的文章
下一篇 :
梯度下降法的三种形式BGD、SGD以及MBGD
-
企业为什么要上云?企业如何上云?
2026-05-19栏目: 教程
-
工作流在Kubernetes集群中的实践
2026-05-19栏目: 教程
-
如何从5万设备中找出频繁掉线设备,长期不在线的设备?
2026-05-19栏目: 教程
-
零售数据观(一):如何花30分钟成为一个标签设计“达人”
2026-05-19栏目: 教程
-
开放下载!《长安十二时辰》爆款背后的优酷技术秘籍首次公开
2026-05-19栏目: 教程
