在页面加载后,我有一些页面的元素被库注入。这些元素具有onClick操作,由jQuery控制。由于在加载页面后呈现这些项目,jQuery是否会针对这些项目应用onClick操作?
答案 0 :(得分:5)
这是使用委托事件的典型情况,其中您使用作为参数传递的特定选择器将处理程序绑定到父元素,并且仅当匹配选择器是触发事件的选择器时,jQuery才会触发处理程序。
详细了解直接和委派活动下的jQuery文档 - > http://api.jquery.com/on/
.on( events [, selector] [, data], handler(eventObject) )
events
- 一个或多个以空格分隔的事件类型和可选项 名称空间,例如“click”或“keydown.myPlugin”。
selector
一个选择器字符串,用于过滤所选的后代 触发事件的元素。如果选择器为null或省略, 事件总是在到达所选元素时被触发。
data
当事件发生时,将在event.data中传递给处理程序的数据 触发。
handler(eventObject)
事件发生时要执行的函数 触发。值false也允许作为a的简写 简单地返回false的函数。
以上是针对稍后可以添加到DOM的动态元素。
注意:
包含委托事件,应始终将其绑定到绑定处理程序时可用的最近的静态容器。更多信息:Should all jquery events be bound to $(document)?
但是,最好直接绑定到元素插入到DOM后绑定处理程序可以实现的元素。
答案 1 :(得分:3)
使用表格:
$("#myid").on("click",".myTargetElement", function(){
// do my click stuff here
});
示例标记:
<div id="myid">
<div class="myTargetElement">Click Me</div>
<div class="myTargetElement">Click Me</div>
</div>
注意:此表单绑定到文档而不是父元素,强制文档遍历,因此不建议最佳:
$(".myTargetElement").on("click", function(){
// do my click stuff here
});
示例:克隆上面标记中的第一个元素,并在单击时将其设为蓝色:
$("#myid").on("click",".myTargetElement", function(){
$(this).css('color','blue');
});
$('.myTargetElement').eq(0).clone().text("New").appendTo('#myid');