如何才能将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').