博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery Event.stopPropagation() 函数详解
阅读量:7074 次
发布时间:2019-06-28

本文共 2149 字,大约阅读时间需要 7 分钟。

stopPropagation()函数用于阻止当前事件在DOM树上冒泡

根据DOM事件流机制,在元素上触发的大多数事件都会冒泡传递到该元素的所有祖辈元素上,如果这些祖辈元素上也绑定了相应的事件处理函数,就会触发执行这些函数。

使用stopPropagation()函数可以阻止当前事件向祖辈元素的冒泡传递,也就是说该事件不会触发执行当前元素的任何祖辈元素的任何事件处理函数。

该函数只阻止事件向祖辈元素的传播,不会阻止该元素自身绑定的其他事件处理函数的函数。不仅会阻止事件向祖辈元素的传播,还会阻止该元素绑定的其他(尚未执行的)事件处理函数的执行。

此外,由于live()函数并不是将事件处理函数直接绑定到自己身上,而是"委托"绑定到祖辈元素上,由祖辈元素来触发执行。live()函数会先一次性冒泡到文档的顶部,然后为符合条件的元素触发事件。因此,stopPropagation()函数无法阻止live事件的冒泡。

同样地,delegate()函数也是"委托事件函数",只有事件冒泡传递到"受委托"的祖辈元素才会被触发执行。因此,stopPropagation()函数无法阻止该元素到"受委托"的祖辈元素之间的事件冒泡。

该函数属于jQuery的。

语法

eventObject.stopPropagation( )

返回值

stopPropagation()函数没有返回值,也可以说返回值为undefined

示例&说明

请参考下面这段HTML代码:

   

段落文本内容        

event.stopPropagation()函数相关的jQuery示例代码如下:

// 为所有div元素绑定click事件 $("div").click( function(event){ alert("div-click"); } ); //为所有p元素绑定click事件 $("p").click( function(event){ alert("p-click"); } ); //为所有button元素绑定click事件 $(":button").click( function(event){ alert("button-click"); // 阻止事件冒泡到DOM树上 event.stopPropagation(); // 只执行button的click,如果注释掉该行,将执行button、p和div的click } );

注意,live()函数无法阻止事件的冒泡传递,相应的jQuery示例代码如下(仍参照上面的HTML代码)。点击按钮,p-click、div-click、button-click都会执行:

// 为所有div元素的click事件绑定处理函数 $("div").click( function(event){ alert("div-click"); } ); // 为所有p元素的click事件绑定处理函数 $("p").click( function(event){ alert("p-click"); } ); // 为div元素内的所有button元素的click事件绑定处理函数 $("div").live("click", ":button", function(event){ alert("button-click"); event.stopPropagation(); } ); // 点击按钮,所有事件处理函数都会执行 // 因为live()函数先直接冒泡到document,然后再来触发事件,因此它无法阻止事件冒泡(执行函数时都已经冒泡完毕,当然无法阻止)

delegate()函数无法阻止该元素和"受委托"元素之间的事件冒泡,相应的jQuery示例代码如下(仍参照上面的HTML代码)。点击按钮,会执行p-click、button-click:

// 为所有div元素的click事件绑定处理函数 $("div").click( function(event){ alert("div-click"); } ); // 为所有p元素的click事件绑定处理函数 $("p").click( function(event){ alert("p-click"); } ); // 为div元素内的所有button元素的click事件绑定处理函数 $("div").delegate(":button", "click", function(event){ alert("button-click"); event.stopPropagation(); } ); // 点击按钮,会执行p-click和button-click // 因为delegate()函数会把button元素的点击事件委托给div元素来触发,所以事件必须冒泡到div元素才能触发,它无法阻止button到div之间的事件冒泡,所以会执行p-click。
分类:  ,
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/5377778.html
,如需转载请自行联系原作者
你可能感兴趣的文章
SQLite第二课 源码下载编译
查看>>
ibatis动态生成列时的列名无效
查看>>
通用汽车新增130辆测试无人车,配激光雷达
查看>>
python之通过“反射”实现不同的url指向不同函数进行处理(反射应用一)
查看>>
10.6 监控io性能;10.7 free;10.8 ps;10.9 查看网络状态;10.10 抓包
查看>>
delegate的用法
查看>>
Ubuntu <2TB sdb preseed示例
查看>>
Android开发之旅:组件生命周期(二)
查看>>
使用LVS+NAT搭建集群实现负载均衡
查看>>
LVM 磁盘分区扩容
查看>>
mysql5.6之key_buffer_size优化设置
查看>>
查看Linux服务器网卡流量小脚本shell和Python各一例
查看>>
Linux TC的ifb原理以及ingress流控
查看>>
AgileEAS.NET之敏捷并行开发方法
查看>>
Java源码分析系列之ArrayList读后感
查看>>
性能测试之手机号码python生成方式
查看>>
统计数据库大小的方法
查看>>
PHP递归遍历文件夹
查看>>
用户系列之五:用户SID查看之终结版
查看>>
ubuntu 11.10下载和编译Android源码
查看>>