如何解决我如何使我的jQuery\'Click\'函数仅对直接li而不对子li起作用
| 我有: $(\'#accordion> li).click(function(){ 但是,如果同时单击#手风琴按钮,就会运行。 这是html标记:<ul id=\"accordion\">
<li id=\"test1\">
<a href=\"#\">Test</a>
<ol>
<li>
<a href=\"#\">test</a>
</li>
</ol>
</li>
</ul>
解决方法
问题在于,后代元素上的事件冒泡直到祖先元素。通过检查原始元素的(
event.target
)第一祖先li
来停止此操作:
$(\'#accordion > li\').click(function (event) {
if ($(event.target).closest(\'li\').is(this)) {
// it\'s the right one
}
});
看到
event.target
closest
is
, 您可以在jquery中使用stopImmediatePropagation()来避免它冒泡。
$(\'#accordion > li).click(function (event) {
event.stopImmediatePropagation();
//do what you need to do
}
, 一个更简单的解决方案可能是:
$(\'#accordion > li:not(li li)\').click(function () {});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。