【前言】
最近在给学生整理面试题,这里简单记录下课堂遗落的一个知识点,即阻止事件冒泡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 , 那么之后会弹出窗口“第一次执行”,“第二次执行”两个窗口
.
相关推荐
如果你想完全取消事件的处理,应该使用`event.stopImmediatePropagation()`,这样可以防止当前元素上其他监听相同事件的处理函数被执行。 了解并熟练运用`event.stopPropagation()`对于编写高性能、低耦合的...
在事件处理函数中,`event`对象提供了很多有用的信息,如`event.target`(触发事件的元素)、`event.preventDefault()`(阻止默认行为)和`event.stopImmediatePropagation()`(阻止当前元素及后代的事件处理)。...
阻止事件冒泡的方法主要有两种:`event.stopPropagation()` 和 `event.stopImmediatePropagation()`。这两种方法在不同的场景下有不同的应用。 1. `event.stopPropagation()` 这个方法可以阻止事件继续在DOM树中...
如果一个元素绑定了多个事件处理函数,使用`stopImmediatePropagation()`可以确保只有当前处理函数执行。 ```javascript element.addEventListener('click', function(event) { event.stopImmediatePropagation();...
合成事件提供了与原生事件相似的API,但不完全相同,如`event.preventDefault()`用于阻止默认行为,而`event.stopPropagation()`在React中并不阻止冒泡,应使用`event.stopImmediatePropagation()`来阻止事件进一步...
在事件捕获的阶段,同样可以在事件处理函数中调用event.stopPropagation()方法来停止事件继续向下传播,但更多情况下开发者会使用event.stopImmediatePropagation()来阻止同一层级中其他事件监听器的执行。...
普通函数和箭头函数的区别 - **写法**:箭头函数语法更简洁。 - **this指向**:普通函数的`this`指向调用它的对象;箭头函数没有自己的`this`,它继承自外部最近一层非箭头函数的作用域的`this`。 - **new目标**:...
- `event.stopImmediatePropagation()`:阻止同一元素上的其他事件处理函数执行。 理解并熟练运用JavaScript的事件和事件响应,是构建交互式网页的关键。通过本文的讲解,希望你对JavaScript事件有了更深入的认识,...
这可以通过在事件处理函数中使用`event.stopPropagation()`来阻止事件继续冒泡,或者使用`event.stopImmediatePropagation()`来立即停止所有后续的事件处理。 总之,理解JavaScript中的事件冒泡机制对于编写高效的...
使用`event.stopPropagation()`可以阻止事件继续冒泡,`event.stopImmediatePropagation()`则可以阻止同级的其他事件处理函数执行。 7. **事件委托**:为了提高性能和减少内存消耗,可以使用事件委托。在一个父元素...
6. **事件冒泡和阻止**:`stopPropagation`方法可以阻止事件继续冒泡到父级节点,而`stopImmediatePropagation`则阻止同一事件在当前目标上触发其他监听器。 7. **事件委托**:在大型项目中,事件委托是一种优化...
可以通过设置`event.stopPropagation()`阻止事件冒泡,`event.stopImmediatePropagation()`则阻止同一事件的所有其他处理程序。 六、事件对象: 每个事件都伴随着一个事件对象,提供了关于事件的详细信息,如事件...
可以使用`event.stopPropagation()`阻止事件冒泡,`event.stopImmediatePropagation()`阻止同一事件的其他监听器执行。 6. **事件委托**:这是一种优化事件处理的技术,通过在父元素上设置监听器,而不是在每个子...
需要注意的是,event.stopImmediatePropagation()和event.stopPropagation()在阻止事件传播方面有所不同。stopImmediatePropagation方法阻止同一个元素上的其他事件监听器被触发,而stopPropagation方法只阻止事件...
在这篇深入浅出的第二部分中,我们将重点深入探讨DOM事件中Event对象的常用属性和方法,以及在Internet Explorer(IE)浏览器中的兼容性问题和相应的解决方案。 首先,我们来了解什么是DOM事件中的Event对象。Event...
6. **stopImmediatePropagation()**:不仅阻止事件冒泡,还阻止同一元素上其他事件处理函数的执行。 在实际应用中,我们通常会结合Window对象和Event对象来处理用户交互。例如,在`demo1.html`中,可能包含了一个...
可以通过`event.stopPropagation()`阻止事件冒泡,`event.stopImmediatePropagation()`则能阻止所有同级事件处理函数的执行。 4. **事件对象**:每个事件都伴随着一个事件对象`event`,其中包含了有关事件的信息,...