我使用return false来停止父链接触发。父链接用于打开下拉列表。
我遇到的问题是返回false也是为下拉列表中的子项设置return false。
如何只将父链接设置为false,并且所有子链接都为true?
jQuery的:
$('#account').on('click', function() {
$('#account-options').fadeIn('slow');
$(document).one('click', function() {
$("#account-options").fadeOut('slow');
});
return false;
});
$("#account-options").on('click', function() {
return false;
});
HTML:
<li id="account"><a href="/account">Your Account</a>
<ul id="account-options">
<li><a href="">test1</a></li>
<li><a href="">test2</a></li>
</ul>
</li>
谢谢。
答案 0 :(得分:5)
您正在遇到事件传播。当您单击<a>
中的#account-options
个元素之一时,它会冒泡到#account-options
,执行其单击事件处理程序,然后再执行#account
,执行其事件处理程序,这两个都阻止了事件的默认行为(在这种情况下,在链接之后)。您需要在<a>
级别停止事件传播:
$('#account-options a').on('click', function(e) {
e.stopPropagation();
});
答案 1 :(得分:0)
试试这个:
$("#account-options>li").on('click', function() {
return true;
});
问候,