我有以下动态创建的内容:
<a class="editLink" href="/location/Edit?city=05">Edit</a>
此动态和其他editLink行是动态创建的。
我想做的是为这些添加一些jQuery:
$(".editLink").button();
$(".editLink").click(function () {
alert('edit link');
return false;
});
有什么方法可以在元素出现之前分配它吗?另外,我该如何处理以下内容:
$(".editLink").button();
当.editLink尚未出现时。
答案 0 :(得分:3)
您可以使用jQuery.live()方法收听页面上的新元素。当它添加到页面时,事件会自动添加。
答案 1 :(得分:3)
使用事件委派,将处理程序放在文档上。
$(document).on('click', '.editLink', function() {
alert('edit link');
return false;
});
这称为“现场”或“委派”事件。 $(document)
部分标识将处理事件的元素,此代码运行时必须存在。您应该尽可能地将其设置为父元素。使用document
有点过于热心,但它会起作用。
'.editLink'
字符串使用处理程序标识元素内的所有子元素的选择器。当事件发生时,将针对此选择器检查原始元素,以查看匹配的事件是否触发了事件。如果是这样,那么运行事件处理程序。
请参阅此处的工作示例:http://jsfiddle.net/Squeegy/guz9A/1/
注意绑定处理程序时链接是如何存在的,但是稍后添加处理程序时它们仍会触发处理程序。
答案 2 :(得分:3)
是的,你可以deligating
使用on
inf使用jquery 1.7或更多其他人使用delegate
进行活动。
$('body').on('click', '.editLink', function() {
alert('edit link');
return false;
});
而不是body,如果你知道提高性能,你可以使用任何上下文选择器(可能是父元素)
答案 3 :(得分:2)
你可以使用jquery委托 - http://api.jquery.com/delegate/