我需要能够检测到类引用的特定容器中发生的任何点击,如果用户点击了任何嵌套元素,我应该能够检测到点击并更新标志
<div class="container" >
<div class="x1">
<div class="x2">
<div class="">
<span class="">
<ul class="">
</div>
</div>
我尝试使用jquery,但我更喜欢使用 Backbone.js 。
//$(document).on('click','.container', function(e){
//$('.container').delegate("div", "click", function(e) {
不确定当用户点击div中包含容器类的一些嵌套元素时,我需要使用什么事件。基本上,我需要更新一个标志,以防用户在此div之外点击,但我不希望在侦听整个主体的事件处理程序上有一个大的范围。
3条答案
按热度按时间7rtdyuoh1#
既然您要求提供一个Backbone示例,下面将介绍如何侦听div及其子项上的点击。
单击
test
文本应输出:使用jQuery,上面的代码(大致)相当于:
但对于大多数情况,这应该足够了:
不要使用
.children().on(...)
,因为这将为每个子进程创建一个新的侦听器,效率很低。检测div外部的点击是完全不同的,有很多方法可以实现,但没有一种是完美的。
请参阅:
就我个人而言,我使用了
focus
和blur
事件(不要忘记元素上的tabindex="-1"
)。vxf3dgd42#
也许是这个?:
jQuery的优点在于,您可以使用与CSS相同的选择器,因此我使用
.container *
来定位容器中的所有元素。6tr1vspr3#
我使用了jquery.children()方法,请查看this code pen。
本质上,对于类容器(在本例中为div)的所有子元素,添加一个事件处理程序。