示例
<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 阻止当前元素的剩余的相同类型的事件,不同类型的事件不会被阻止。