Jquery 仅对ul中的第一级li元素执行特定操作?
Jquery 仅对ul中的第一级li元素执行特定操作?,jquery,Jquery,jQuery('ul.nav.lvl1>li')。打开(“单击”,函数(){ 警惕(“你好”); }); 您需要对内部li元素使用。否则,对内部元素的单击将传播到父元素 jQuery('ul.nav.lvl1>li')。打开(“单击”,函数(){ 警惕(“你好”); }); jQuery('ul.nav.lvl1>li')。打开(“单击”,函数(e){ e、 停止传播(); }); 这是因为您使用的选择器 当您使用选择器(如ul>l
jQuery('ul.nav.lvl1>li')。打开(“单击”,函数(){
警惕(“你好”);
});代码>
-
-
您需要对内部li
元素使用。否则,对内部元素的单击将传播到父元素
jQuery('ul.nav.lvl1>li')。打开(“单击”,函数(){
警惕(“你好”);
});
jQuery('ul.nav.lvl1>li')。打开(“单击”,函数(e){
e、 停止传播();
});代码>
-
这是因为您使用的选择器
当您使用选择器(如ul>li
)时,您将只针对作为ul直接子级的li,因此它不会对作为li的子级的li触发。而不是停止事件传播(这可能会影响和抑制连接的所有其他事件侦听器),您只需检查最近的祖先li
元素是否是事件侦听器附加到的元素
在下面的示例中,event.target
指单击的元素,而event.currentTarget
指事件侦听器附加到的元素
通过使用.closest()
方法,可以确定event.target
是否是事件侦听器最初附加到的元素:
$('ul.nav.lvl1>li')。在('click',函数(事件){
if($(event.target).closest('li')是(event.currentTarget)){
警报(“点击”);
}
});代码>
-
-
我认为应该避免使用.stopPropagation()
(正如我在回答中提到的),以防这些元素附加任何其他事件。