jQuery的html()会删除附加到被替换元素的所有数据吗?

时间:2011-05-03 18:49:21

标签: javascript jquery

我在jQuery的帮助下显示一个标签界面。当您单击选项卡时,ajax调用将使用新的html替换$(".content")元素中的所有html,使用类似

的内容

$(".content").html(response);

当我这样做时,是否删除了附加到.content div内的元素的所有jquery事件和函数?替换HTML后再次触发这些事件和函数是否可以?如果我单击选项卡324523452354次,它是否每次都会复制jQuery数据?

3 个答案:

答案 0 :(得分:2)

是。他们将被删除。您可以使用直播事件附加到尚不存在的元素。

 $(".myElementClass").live("click", function (e) {
         e.preventDefault();
         //do stuff
});

在这种情况下,无论何时将该函数注入DOM,都将始终在myElement上调用此函数。

答案 1 :(得分:0)

选择器内的所有HTML都会替换为您传入的参数,这意味着它已完全从DOM中删除。意思是你有:

<div id="mine">
  <ul>
    <li>One thing</li>
  </ul>
</div>

我这样打电话:

$('div#mine').html("hey");

我的HTML将是:

<div id="mine">
  hey
</div>

正如你所看到的那样被彻底删除,所有绑定事件都没有意义。但是,如果使用jQuery.live()绑定,那么尚不存在的元素可以包含与之关联的事件。这意味着如果您向DOM添加一些元素,那么它们仍然可以正常工作,如果您添加更多元素,则无需重新绑定,或者替换它们。

答案 2 :(得分:0)

**.live**事件在文档级绑定,请阅读以下文档,该文档非常有用

http://www.bennadel.com/blog/1751-jQuery-Live-Method-And-Event-Bubbling.htm