一尘不染

阻止执行父事件处理程序

javascript

我有一棵divs树:

<div id="a" onclick="func">
    <div id="b" onclick="func">
         <div id="c" onclick="func">
         </div>
    </div>
</div>

在div上单击时,将使其子级不可见-即单击“ a”将使“ b”和“ c”不可见。

function func{
   if ($(childId).hasClass("visible")){
    $(childId).removeClass("visible");
    $(childId).addClass("invisible");
}

问题是:单击“ b”将调用“ a”的单击,并使“ b”和“ c”不可见。如何使用jQuery禁用对“ a”的点击?

谢谢


阅读 281

收藏
2020-04-25

共1个答案

一尘不染

您可以为孩子添加一个处理程序,以防止click事件蔓延:

function handler(event) {
    event.stopPropagation();
    // now do your stuff        
}
$('#a').add('#b').click(handler);

这样一来,点击'#b'不会传播到'#a'。都不会单击以'#c'转到'#b',因此也不会'#a'

2020-04-25