3

我正在使用 return false 来停止父链接触发。父链接用于打开下拉列表。

我遇到的问题是这个 return 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>

谢谢你。

4

2 回答 2

5

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

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

jsFiddle 演示

于 2013-05-20T13:36:17.547 回答
0

尝试这个:

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

问候,

于 2013-05-20T12:28:25.450 回答