对不起我的英语。 我一直在尝试创建一个动态表,可以在按下编辑按钮后编辑其中的数据类型。 问题是我在最后一列创建了复选框列后,我根本无法在jQuery中执行click函数。
创建函数如下所示:
$("#meetingspanel td:last").each(function(event){ // Adding the checking column and showing the editing buttons
$("#btnDelete").fadeIn("slow");
$("#btnRename").fadeIn("slow");
$("<td style=border:0px><input type='checkbox' id='btncb'></td>").insertAfter($("td:nth-child(6)"));
});
并猜测我是否在我使用的函数内部:
$(":checkbox").click(function(event){
alert("im here !");
});
当我点击复选框时它就找不到了。 帮助
答案 0 :(得分:1)
如果我已正确理解您的问题,您将需要以允许它触发原始绑定后添加到DOM的元素的方式绑定click
事件,因为您正在插入复选框在你的剧本中。
如果您使用的是jQuery 1.7+,请使用on
:
$(someAncestor).on("click", ":checkbox", function() {
//Do stuff
});
当上面的代码执行时, someAncestor
需要是DOM中的元素,它是要触发事件的复选框的祖先。根据代码的外观,这可能是table
元素。
如果您使用的是较旧版本的jQuery,请改为使用delegate
方法。
这个工作的原因是DOM事件从它们起源的元素通过DOM冒泡。如果将事件处理程序绑定到祖先,则在事件到达该元素时执行该处理程序。 on
和delegate
方法提供了一种过滤这些事件的方法,因此只有当它们来自某个元素时才会被触发。