`

浅谈stopImmediatePropagation函数和stopPropagation函数的区别

阅读更多

【前言】

    最近在给学生整理面试题,这里简单记录下课堂遗落的一个知识点,即阻止事件冒泡stopImmediatePropagation函数和stopPropagation函数的区别

 

【主体】

在事件处理程序中,每个事件处理程序中间都会有一个event对象,而这个event对象有两个方法,一个是stopPropagation方法,一个是stopImmediatePropagation方法,两个方法只差一个Immediate,这里就说说这两个方法的区别

1、stopImmediatePropagation方法:

  stopImmediatePropagation方法作用在当前节点以及事件链上的所有后续节点上,目的是在执行完当前事件处理程序之后,停止当前节点以及所有后续节点的事件处理程序的运行

2、stopPropagation方法

  stopPropagation方法作用在后续节点上,目的在执行完绑定到当前元素上的所有事件处理程序之后,停止执行所有后续节点的事件处理程序

3、区别:

  从概念上讲,在调用完stopPropagation函数之后,就会立即停止对后续节点的访问,但是会执行完绑定到当前节点上的所有事件处理程序;而调用stopImmediatePropagation函数之后,除了所有后续节点,绑定到当前元素上的、当前事件处理程序之后的事件处理程序就不会再执行了。

<div id = "div1">
    <button id = "button1"></button>
</div>
var div = document.getElementById("div1");
var btn = document.getElementById("button1");
div.addEventListener("click" , function(){alert("第一次执行");} , true);        //1
div.addEventListener("click" , function(){alert("第二次执行");} , true);        //2
btn.addEventListener("click" , function(){alert("button 执行");});            //3

   在这里,给 1 函数alert后加上stopImmediatePropagation, 那么之后弹出窗口“第一次执行”

   但是如果给 1 函数alert后加上stopPropagation , 那么之后会弹出窗口“第一次执行”,“第二次执行”两个窗口

 

 

.

分享到:
评论

相关推荐

    JavaScript中使用stopPropagation函数停止事件传播例子

    如果你想完全取消事件的处理,应该使用`event.stopImmediatePropagation()`,这样可以防止当前元素上其他监听相同事件的处理函数被执行。 了解并熟练运用`event.stopPropagation()`对于编写高性能、低耦合的...

    jQuery事件函数共4页.pdf.zip

    在事件处理函数中,`event`对象提供了很多有用的信息,如`event.target`(触发事件的元素)、`event.preventDefault()`(阻止默认行为)和`event.stopImmediatePropagation()`(阻止当前元素及后代的事件处理)。...

    javascript阻止事件冒泡的一种方法

    阻止事件冒泡的方法主要有两种:`event.stopPropagation()` 和 `event.stopImmediatePropagation()`。这两种方法在不同的场景下有不同的应用。 1. `event.stopPropagation()` 这个方法可以阻止事件继续在DOM树中...

    javascript防止事件传播

    如果一个元素绑定了多个事件处理函数,使用`stopImmediatePropagation()`可以确保只有当前处理函数执行。 ```javascript element.addEventListener('click', function(event) { event.stopImmediatePropagation();...

    自己面试使用的react面试题不轻易分享出来!(已面试成功).pdf

    合成事件提供了与原生事件相似的API,但不完全相同,如`event.preventDefault()`用于阻止默认行为,而`event.stopPropagation()`在React中并不阻止冒泡,应使用`event.stopImmediatePropagation()`来阻止事件进一步...

    JS冒泡事件与事件捕获实例详解

    在事件捕获的阶段,同样可以在事件处理函数中调用event.stopPropagation()方法来停止事件继续向下传播,但更多情况下开发者会使用event.stopImmediatePropagation()来阻止同一层级中其他事件监听器的执行。...

    js常见经典面试题汇总

    普通函数和箭头函数的区别 - **写法**:箭头函数语法更简洁。 - **this指向**:普通函数的`this`指向调用它的对象;箭头函数没有自己的`this`,它继承自外部最近一层非箭头函数的作用域的`this`。 - **new目标**:...

    javascript之事件及事件响应篇

    - `event.stopImmediatePropagation()`:阻止同一元素上的其他事件处理函数执行。 理解并熟练运用JavaScript的事件和事件响应,是构建交互式网页的关键。通过本文的讲解,希望你对JavaScript事件有了更深入的认识,...

    【JavaScript源代码】JavaScript中事件冒泡机制示例详析.docx

    这可以通过在事件处理函数中使用`event.stopPropagation()`来阻止事件继续冒泡,或者使用`event.stopImmediatePropagation()`来立即停止所有后续的事件处理。 总之,理解JavaScript中的事件冒泡机制对于编写高效的...

    javascript常用事件应用

    使用`event.stopPropagation()`可以阻止事件继续冒泡,`event.stopImmediatePropagation()`则可以阻止同级的其他事件处理函数执行。 7. **事件委托**:为了提高性能和减少内存消耗,可以使用事件委托。在一个父元素...

    flash as3 的例子

    6. **事件冒泡和阻止**:`stopPropagation`方法可以阻止事件继续冒泡到父级节点,而`stopImmediatePropagation`则阻止同一事件在当前目标上触发其他监听器。 7. **事件委托**:在大型项目中,事件委托是一种优化...

    Javascript事件的定义.doc

    可以通过设置`event.stopPropagation()`阻止事件冒泡,`event.stopImmediatePropagation()`则阻止同一事件的所有其他处理程序。 六、事件对象: 每个事件都伴随着一个事件对象,提供了关于事件的详细信息,如事件...

    0910事件处理

    可以使用`event.stopPropagation()`阻止事件冒泡,`event.stopImmediatePropagation()`阻止同一事件的其他监听器执行。 6. **事件委托**:这是一种优化事件处理的技术,通过在父元素上设置监听器,而不是在每个子...

    jQuery阻止同类型事件小结

    需要注意的是,event.stopImmediatePropagation()和event.stopPropagation()在阻止事件传播方面有所不同。stopImmediatePropagation方法阻止同一个元素上的其他事件监听器被触发,而stopPropagation方法只阻止事件...

    DOM 事件的深入浅出(二)

    在这篇深入浅出的第二部分中,我们将重点深入探讨DOM事件中Event对象的常用属性和方法,以及在Internet Explorer(IE)浏览器中的兼容性问题和相应的解决方案。 首先,我们来了解什么是DOM事件中的Event对象。Event...

    window对象--event对象详解

    6. **stopImmediatePropagation()**:不仅阻止事件冒泡,还阻止同一元素上其他事件处理函数的执行。 在实际应用中,我们通常会结合Window对象和Event对象来处理用户交互。例如,在`demo1.html`中,可能包含了一个...

    NativeJS随记 - 浅析JavaScript Events

    可以通过`event.stopPropagation()`阻止事件冒泡,`event.stopImmediatePropagation()`则能阻止所有同级事件处理函数的执行。 4. **事件对象**:每个事件都伴随着一个事件对象`event`,其中包含了有关事件的信息,...

Global site tag (gtag.js) - Google Analytics