2014-12-29 122 views
2

上我使用jQuery來火了菜單上單擊事件:此代碼獲取鏈接點擊菜單

<div id="context-menu"> 
     <ul class="dropdown-menu" role="menu"> 
     <li><a tabindex="-1">Color</a></li> 
     <li><a tabindex="-1">Transparency</a></li> 
     <li><a tabindex="-1">Show/Hide</a></li> 
     <!-- <li class="divider"></li> 
     <li><a tabindex="-1">Separated link</a></li>--> 
     </ul> 
    </div> 

$('#context-menu').on('click', function(e) { 

console.log(e); 

}); 

,我也明白,我怎麼能知道李是點擊。

回答

1

您應該指定一個選擇的元素現在匹配點擊

$('#context-menu').on('click', '.dropdown-menu > li', function(e) { 

,在你的處理器,this指點擊li元素。

0

事件參數有一個目標屬性,它是被點擊的實際元素(在這裏是lia),用它來獲取li。

var li = $(e.target).closest('.dropdown-menu li')[0] 

http://api.jquery.com/closest/

0

您是否使用tabindex="-1"故意?對於鍵盤輔助功能,那些tabindex es應該是tabindex="0",而不是-1。見http://webaim.org/techniques/keyboard/tabindex。它也看起來像你應該使用<button> s,而不是<a> s。

你應該添加一個單擊處理程序到<a>就像這樣:

$('#context-menu a').click(function() { 
    // The <a> that was clicked. 
    var theAnchorTag = $(this); 
    // Its parent <li>. 
    var theLiTag = theAnchorTag.parent(); 
}); 

中,如果你把我的按鈕上面的建議選擇替換abutton

0
$('a').click(
    function(){ 
    console.log($(this).parent()); /* should return link's parent-node */ 
    console.log($(this).parent().index()); /* should return li's index */ 
    } 
)