如何查找容器内的所有事件并委派它们
How to find all events inside a container and delegate them
假设我有一个这样的标记
<div class="container">
<div class="abc" onclick="alert(this.innerHTML)">ABC</div>
<div class="abc1">ABC</div>
<div class="abc2">abc2</div>
<div class="xys3">xys3</div>
<div class="asd23">asd223</div>
</div>
有些事件与像这样的container
的children
绑定
$( ".abc1" ).bind( "click", function(){
alert( $( this ).html() );
} );
$( ".abc2" ).bind( "click", function(){
alert( $( this ).html() );
} );
$( ".xys3" ).bind( "click", function(){
alert( $( this ).html() );
} );
$( ".asd23" ).bind( "click", function(){
alert( $( this ).html() );
} );
现在,我从容器中取出html并再次设置它:
var html = $( ".container" ).html();
// a set missing here to convert 'bind' events to 'on' events
$( ".container" ).html( html );
事件现在不起作用,因为它们一开始就没有委派。此外,容器可能具有更多元素(它们是动态的)。
是否可以在容器内找到所有事件并委派它们?
这是一个小提琴
从 jQuery 1.7 开始,
.on()
方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind()
方法用于将事件处理程序直接附加到元素。
所以只需使用 on() 事件委托,它就会解决问题:
$( "body" ).on( "click", ".abc2", function(){
alert( $( this ).html() );
});
您可以将一个通用类添加到所有div,然后将点击事件附加到它:
.HTML:
<div class="container">
<div class="my-class abc" onclick="alert(this.innerHTML)">ABC</div>
<div class="my-class abc1">ABC</div>
<div class="my-class abc2">abc2</div>
<div class="my-class xys3">xys3</div>
<div class="my-class asd23">asd223</div>
</div>
.JS:
$( "body" ).on( "click", ".my-class", function(){
alert( $( this ).html() );
});
希望这有帮助。
$( "body" ).on( "click", ".my-class", function(){
alert( $( this ).html() );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="my-class abc" onclick="alert(this.innerHTML)">ABC</div>
<div class="my-class abc1">ABC</div>
<div class="my-class abc2">abc2</div>
<div class="my-class xys3">xys3</div>
<div class="my-class asd23">asd223</div>
</div>
委托方法如下所示:
$(document).on( "click", ".abc1", function(){
alert( $( this ).html() );
});
您可以使用 DOM 中未更改的元素更改$(document)
,该元素是您需要委派的子项的父级。使用文档将在任何情况下都有效,但性能可能会降低。
相关文章:
- 来自文档或下一个静态父级的事件委派
- jQuery中的事件委派,如何进行
- 修改鼠标事件对象的“目标”以进行事件委派
- 动态表行,将单击事件委派给新添加的元素
- Javascript中的动态表和事件委派
- JQUERY的事件委派问题
- 如何用模块模式扩展javascript中的事件委派
- Jquery可拖动&可丢弃事件委派:stop&滴
- JavaScript事件委派-行为
- 事件委派后表单不起作用
- 事件委派模式,在按钮中使用 addEventListener 和嵌套元素
- iframe 中输入上的模糊/焦点事件(委派)
- 为什么要做出反应.js事件委派很快
- Jquery 事件委派问题
- 基于类的 DOM 事件委派
- ExtJS 事件委派不起作用
- 事件委派问题
- 事件委派 - jQuery
- 将事件委派给主干中的父视图
- 使用事件委派,为什么事件阶段为 0,表示无