博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
stopImmediatePropagation的应用
阅读量:6999 次
发布时间:2019-06-27

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

在众多的方法里面,event.stopImmediatePropagation 算是比较少用的一个方法,拼写上感觉一半像 event.stopPropagation。

对于stopPropagation 的用法大家是众所周知的,他是W3C标准事件方法,用于阻止事件冒泡(非标准情况下,用window.event.stopBubble来阻止冒泡)
而stopImmediatePropagation 的功能比stopPropagation 多一些,除了可以阻止事件冒泡之外,还可以把这个元素绑定的同类型事件也阻止了。

先把下面的代码片断(摘自MDN)

                            

paragraph

  

p标签绑定了三个click事件,div绑定了一个click事件。

其中p第二个click事件中使用了event.stopImmediatePropagation();
当点击时P标签时,第一和第二个alert会正常出现,
第三个alert被event.stopImmediatePropagation();的特性取消了以后的同类型(click)事件
第四个alert不出来同被阻止了事件冒泡,所以也不会出现。
相当于做了event.stopPropagation()后,再return false;  jQuery对事件代理做了类似的封装。
我们了解特性之后,看一个简单应用场景:

假设点击一个按钮后,需要检测两个input控件的值,值为空时打印'error',并停止检测下一个input,同时也需停止提单提交。

我们通常可能会这样写:

                    
    

  但用了event.stopImmediatePropagation时,可以对代码进行更好的抽象。

                    
    

  

题外:

event.isImmediatePropagationStopped 可以用来确定该元素是否有调用过event.stopImmediatePropagation。

浏览器支持情况:

Firefox >=10Chrome
IE >= 9
Opera
Safari

转载于:https://www.cnblogs.com/xupeiyu/p/4897621.html

你可能感兴趣的文章