试图把我的头脑围绕在jQuery“.not()”函数上,然后遇到了一个问题。我希望父div是“可单击的”,但是如果用户单击子元素,则不会调用脚本。
$(this).not(children()).click(function(){
$(".example").fadeOut("fast");
});
html:
<div class="example">
<div>
<p>This content is not affected by clicks.</p>
</div>
</div>
6条答案
按热度按时间rta7y2nd1#
为此,停止单击子using .stopPropagation:
这将阻止子级单击超过其级别,因此父级不会接收到单击。
.not()
的用法稍有不同,它会从选择器中过滤出元素,例如:对于单击,您的问题是click on a child bubbles up to the parent,而不是您无意中将单击处理程序附加到子对象。
b09cbbtk2#
我正在使用以下标记,遇到了同样的问题:
在这里,我使用了以下逻辑:
就确切的问题而言,我可以看到如下工作:
或者反过来说
szqfcxe23#
或者你也可以这样做:
ioekq8ef4#
我的解决方案:
xeufq47z5#
我个人会在子元素中添加一个click处理程序,它只会停止点击的传播,看起来像这样:
wpx232ag6#
这里有一个例子,绿色的方块是父元素,黄色的方块是子元素。
希望这能有所帮助。