如何才能将jQuery.click仅应用于第一级项目?

我需要将jQuery.click仅应用于第一级项目。 我怎么做?

这是我的清单:

  • Item 1

  • Item 2

    • Sub Item 1
    • Sub Item 2
    • Sub Item 3
  • Item 3

    • Sub Item 4
    • Sub Item 5

这是jQuery

 jQuery('#adminMenu > li').click(function(){ alert('test'); }); 

UPDATE
单击子菜单项时,仅当我单击列表项A,B或C时,警报不应触发。

解决方案1
这是基于Marcels建议的工作代码。

  jQuery('#adminMenu > li > h3').click(function(e) { var activeUL = jQuery("#adminMenu > li ul:visible"); var activeLI = jQuery("#adminMenu > li ul:visible").parent('li:first'); var clicked = jQuery(this).parent('li:first'); // Close submenu activeUL.hide('fast'); // Open submenu if( activeLI.attr('id') != clicked.attr('id') ) clicked.children('ul').show('fast'); }); 

解决方案2
这是基于Eyelids建议的工作代码。

  jQuery('#adminMenu > li').click(function(e) { var clicked = jQuery(e.target); // Ensure we're checking which list item is clicked, // other children should be allowed if(!clicked.is('li') && clicked.parents('li').length > 0) { // :first ensures we do not select higher level list items clicked = clicked.parents('li:first'); } // If clicked list item is a child of another list item, we'll exit here if(!clicked.is('#adminMenu > li')) { return; } var activeUL = jQuery("#adminMenu > li ul:visible"); var activeLI = jQuery("#adminMenu > li ul:visible").parent('li:first'); // Close submenu activeUL.hide('fast'); // Open submenu if( activeLI.attr('id') != clicked.attr('id') ) clicked.children('ul').show('fast'); }); 

多谢你们! 没有你的帮助我永远不会管理这个! 🙂

 jQuery('#adminMenu > li').click(function(e) { var clicked = jQuery(e.target); // Ensure we're checking which list item is clicked, // other children should be allowed if(!clicked.is('li') && clicked.parents('li').length > 0) { // :first ensures we do not select higher level list items clicked = clicked.parents('li:first'); } // If clicked list item is a child of another list item, we'll exit here if(!clicked.is('#adminMenu > li')) { return; } alert('test'); }); 

如果单击列表项不是#adminMenu的直接后代,则更新为退出。

问题是,您将点击添加到整个LI(包括所有子项等)。 您只需要“点击”标签,因此请使用:

 jQuery("#adminMenu > li > h3").click(...); 

获取一组元素,其中包含每个匹配元素集的所有唯一直接子元素。

孩子([expr])

http://docs.jquery.com/Traversing/children

  jQuery('#adminMenu').children('li').children('h3').click(function() { alert('test'); }); 
 jQuery('#adminMenu li:first').