Javascript jQuery document.on()子选择器
我有一个ul,我想在单击子li时创建一个警报Javascript jQuery document.on()子选择器,javascript,jquery,html,Javascript,Jquery,Html,我有一个ul,我想在单击子li时创建一个警报 <ul id="myul"> <div class="test"> <div class="test1"> <li></li> <li></li> </div> </div> </ul> 我不能使用#myul>li,因为我以前有另一个孩
<ul id="myul">
<div class="test">
<div class="test1">
<li></li>
<li></li>
</div>
</div>
</ul>
我不能使用
#myul>li
,因为我以前有另一个孩子li
ul
元素只能包含li
元素,最终与ol
和ul
元素混合。您可以将html和jquery修改为:
$(文档)。在('click','myulli',函数()上{
警惕(“嘿!”);
});代码>
ul,
李{
列表样式类型:无;
}
-
- 锉刀
- 萨德
您可以简单地使用css子选择器,如下所述。它将应用于直接子代,而不仅仅是任何后代
注:根据标准,您不能使div直接成为ul的子女。div标签应该放在li的里面
jQuery("#myul > li").click(function(){
alert('hey!');
});
你可以用
$(document).on('click','#myul li', eventHandler)
这意味着您正在文档上注册一个事件处理程序,但只有当事件源于#myul li
时才会调用eventHandler
,即对于myul
的任何li
子级,而不仅仅是直接子级,也可以是适合您情况的后代
但我建议您甚至将事件注册的范围缩小到最接近的li
祖先,如下所示
$('#myul').on('click','li', eventHandler)
在ul
和li
元素之间使用div
在语义上是不正确的:)您可以使用$('#myul')。在('click','li',urFunction)
-上调用您的函数,在ul
中的任何li
上调用click事件,正如@Arkantos正确地说的那样,这不是结构合理的代码。li标签应始终位于ul标签的正下方。你不能把你的div标签放在你的ul之外吗?那么您的示例代码就可以运行了。@Arkantos您好,谢谢,不幸的是,我使用了一个小部件为这个ul添加了一个自定义滚动条,这个小部件创建了两个div.Ok。。但是,如果您可以控制该小部件的源代码,或者您知道有人可以编辑它,请告诉他们遵循语义。不管怎样,我用你当前的标记发布了一个答案,看看:)#myul>li
意味着只有直系子女,而不仅仅是任何后代:)你应该更新你的answer@Arkantos:-是的,我做了,非常感谢!!考虑到OP的分数,li
不是ul
的直接子女,您的答案仍然无法解决OP的问题。。请根据w3.org标准审查并更新:)@Arkantos:-相关信息。我们不能将div作为ul的直接子对象。div标签应该放在li的里面:)是的。我把这个指向OP,但他使用的是一些他无法控制的小部件,所以他只是想在当前状态下解决这个问题
$('#myul').on('click','li', eventHandler)