排除jQuery事件中的兄弟事件

Exclude siblings on jQuery Events

本文关键字:事件 兄弟 排除 jQuery      更新时间:2023-09-26

我正在创建一个使用悬停和单击添加元素事件的模板生成器。长话短说:当我点击或悬停在一个元素的兄弟元素上时,它会运行所有事件,从最深的兄弟元素开始,直到"最高"的父元素结束。

我已经设法找到了一个解决方案,尽管我认为它很脏:

var childclicked = false;
$('.container > .column').click(function(event) {
    // do stuff
   childclicked = true;
});
$('.container').click(function(event) {
    // preventing code to be executed
    if(!childclicked) {
        // do stuff
    }
});

因为兄弟节点的事件处理程序首先被调用,所以它设置了一个变量,该变量必须在父节点的事件处理程序中进行检查。

没有更好的方法来排除兄弟姐妹吗?

我猜你只需要阻止事件冒泡。您可以通过显式调用

轻松实现这一点
event.stopPropagation();

或从事件处理程序本身返回false。返回false隐式调用.stopPropagation().preventDefault()