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