仅在父级上返回false

时间:2013-05-20 12:26:01

标签: jquery html

我使用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>

谢谢。

2 个答案:

答案 0 :(得分:5)

您正在遇到事件传播。当您单击<a>中的#account-options个元素之一时,它会冒泡到#account-options,执行其单击事件处理程序,然后再执行#account,执行其事件处理程序,这两个都阻止了事件的默认行为(在这种情况下,在链接之后)。您需要在<a>级别停止事件传播:

$('#account-options a').on('click', function(e) {
   e.stopPropagation(); 
});

jsFiddle demo

答案 1 :(得分:0)

试试这个:

$("#account-options>li").on('click', function() { 
    return true; 
});

问候,