问题描述
|
我有:
$(\'#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 () {});