示例
<div id="parent">
parent
<div id="son">son</div>
</div>
<script>
var parent = document.getElementById("parent");
var son = document.getElementById("son");
parent.addEventListener("click", function (e) {
console.log("===click parent===");
e.stopImmediatePropagation();
});
son.addEventListener("click", function (e) {
console.log("===click son(事件1)===");
});
son.addEventListener("click", function (e) {
console.log("===click son(事件2)===");
});
</script>

stopPropagation 阻止冒泡至父元素
parent.addEventListener("click", function (e) {
console.log("===click parent===");
e.stopImmediatePropagation();
});
son.addEventListener("click", function (e) {
console.log("===click son(事件1)===");
e.stopPropagation(); // 阻止冒泡至父元素
});
son.addEventListener("click", function (e) {
console.log("===click son(事件2)===");
});

stopImmediatePropagation 阻止冒泡至当前元素的剩余的相同类型的事件
示例1
parent.addEventListener("click", function (e) {
console.log("===click parent===");
e.stopImmediatePropagation();
});
son.addEventListener("click", function (e) {
console.log("===click son(事件1)===");
e.stopImmediatePropagation(); // 阻止冒泡至当前元素的剩余的相同类型的事件
});
son.addEventListener("click", function (e) {
console.log("===click son(事件2)===");
});

示例2
son.addEventListener("mouseenter", function (e) {
console.log("===mouseenter son(事件1)===");
e.stopImmediatePropagation(); // 阻止冒泡至当前元素的剩余的相同类型的事件
});
son.addEventListener("mouseenter", function (e) {
console.log("===mouseenter son(事件2)===");
});
son.addEventListener("click", function (e) {
console.log("===click son(事件3)===");
});
son.addEventListener("click", function (e) {
console.log("===click son(事件4)===");
});

可见 stopImmediatePropagation 阻止当前元素的剩余的相同类型的事件,不同类型的事件不会被阻止。
本文探讨了JavaScript中两个重要的事件处理方法:stopPropagation用于阻止事件冒泡到父元素,而stopImmediatePropagation则进一步阻止当前元素上相同类型事件的后续处理,但不影响其他类型的事件。
1619

被折叠的 条评论
为什么被折叠?



