jQuery的html()会删除附加到被替换元素的所有数据吗?
我在jQuery的帮助下显示一个标签界面。 单击选项卡时,ajax调用将使用新的html替换$(".content")
元素中的所有html,使用类似
$(".content").html(response);
当我这样做时,所有附加到.content
div中的元素的jquery事件和函数是否被删除? 替换HTML后再次触发这些事件和函数是否可以? 如果我单击选项卡324523452354次,它每次都会复制jQuery数据吗?
是。 他们将被删除。 您可以使用直播事件附加到尚不存在的元素。
$(".myElementClass").live("click", function (e) { e.preventDefault(); //do stuff });
在这种情况下,无论何时将它注入DOM,都将始终在myElement
上调用此函数。
选择器内的所有HTML都将替换为您传入的参数,这意味着它已从DOM中完全删除。 意思是你有:
- One thing
我这样打电话:
$('div#mine').html("hey");
我的HTML将是:
hey
正如你所看到的那样被彻底删除,所有绑定事件都没有任何意义。 但是,如果使用jQuery.live()绑定,那么尚不存在的元素可以包含与之关联的事件。 这意味着如果您向DOM添加一些元素,那么它们的事件仍然有效,如果您添加更多元素,则无需重新绑定,或者替换它们。
**.live**
事件在文档级别绑定,阅读以下文档,这是非常有用的
http://www.bennadel.com/blog/1751-jQuery-Live-Method-And-Event-Bubbling.htm