在jQuery中的自定义事件的冒泡

2024-03-22    分类: 网站建设

昨天的文章牵涉到了jQuery的自定义事件冒泡问题,但只是提到没有详细的说明。在jQuery中,自定义事件是会冒泡的,而且不仅是对普通的DOM元素冒泡,甚至还会扩散到window(defaultView)上。这些机制是jQuery内部实现的,和DOM的事件机制没啥关系。 现在来做这么一个测试<div class="d1"> <div class="d2"> <div class="d3"> div </div> </div> </div> <script src="jquery.js"></script> <script> $(function(){ //选择所有标签外加document和window来绑定上test事件 $("*").add(document).add(window).on("test",function(){ //输出对象的构造器名称和className console.log(this.constructor.name,this.className||""); }); //对最内层的div触发test $(".d3").trigger("test"); }); </script>

这家伙厉害吧,我只对最内层的DIV执行了trigger就触发了这么多个事件,这就是自定义事件冒泡。jQuery默认对事件冒泡,只有特殊指定不冒泡时候才不会冒泡。关于这个机制的实现可以看jQuery的代码(jquery-1.9.1.js 2956行到2973行)。 如果不需要冒泡怎么办呢?在jQuery的内部有这么一个判断if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) )  只有通过这个判断时才会冒泡,最简单的方法就是让onlyHandlers为true。这个操作jQuery有提供方法,所以只要在触发事件时使用triggerHandler即可  $(".d3").triggerHandler("test");

本文标题:在jQuery中的自定义事件的冒泡
URL标题:/news11/321211.html

成都网站建设公司_创新互联,为您提供Google全网营销推广网站排名微信小程序网站制作服务器托管

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设公司