我有一个包含很多子元素的元素。我想清除这个元素的内容并用新结构替换它。
为子元素分配了各种事件侦听器,并非所有这些侦听器都是通过jquery bind方法创建的。
如果我使用jquery的空方法来清除元素,它会删除所有的事件监听器还是只清除通过jquery bind方法创建的监听器?
答案 0 :(得分:13)
正如几位评论者提到的那样,jQuery文档说empty()确实删除了事件处理程序:http://api.jquery.com/empty/
在发布此问题时,或许并非如此,但此页面是Google首次曝光。
答案 1 :(得分:3)
您可以使用 .unbind()取消绑定对象的所有侦听器,并将params留空
如果要删除元素的所有子元素。只需用户 $(“#parent”)。children()。remove();
使用 live()和 die()方法,您可以将事件处理程序添加到尚不存在的元素中。使用 $(“。element”)。live(“click”,function(){})为当前在HTML中的所有.element对象或将来添加的对象添加一个函数
答案 2 :(得分:0)
它不会清除事件监听器。但是您应该将此事件侦听器用作live()
事件,因为您正在动态更改DOM
元素。
例如:
$('a').live('click', function(){
// your stuff
});
//以下代码片段需要jQuery 1.7
$(document).on('click', 'a', function(){
// your stuff
});