2013-05-20 64 views
3

我正在使用return false來停止父級鏈接觸發。父鏈接用於打開下拉菜單。僅在父級上返回false

我得到的問題是這個返回false也是在下拉列表中設置爲兒童返回false。

我怎樣才能設置父鏈接爲false,並且所有的孩子鏈接到真?

的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> 

謝謝。

回答

5

您正在運行到事件傳播。當你點擊#account-options中的一個<a>元素時,它會冒泡到#account-options,執行它的click事件處理程序,然後執行到#account,執行它的事件處理程序,它們都會阻止事件的默認行爲(在這種情況下,跟隨鏈接)。您需要在<a>水平停止事件傳播:

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

jsFiddle demo

0

試試這個:

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

問候,

+0

謝謝,但嘗試這個已經和它不工作。 – ccdavies