使用jQuery删除和添加新html的正确方法

使用jQuery删除和添加新html的正确方法,jquery,html,append,Jquery,Html,Append,我有两个div元素在另一个里面。有时,从用户交互中删除这两项,并放置两个新元素 首先移除现有元素是否合适?还是仅仅覆盖html?或者这有什么关系 $('#item1').remove(); $('#item2').remove(); $('#itemWindow').append(newItem1); $('#itemWindow').append(newItem2); 或者干脆 $('#itemWindow').html(newItem1); $('#itemWindow').append(

我有两个div元素在另一个里面。有时,从用户交互中删除这两项,并放置两个新元素

首先移除现有元素是否合适?还是仅仅覆盖html?或者这有什么关系

$('#item1').remove();
$('#item2').remove();
$('#itemWindow').append(newItem1);
$('#itemWindow').append(newItem2);
或者干脆

$('#itemWindow').html(newItem1);
$('#itemWindow').append(newItem2);
一个是更少的代码,但是应该删除该项吗?这些项目没有任何监听器,但如果它们有监听器,会有什么不同吗

我是一名深入JS和jQuery的ActionScript开发人员。在AS中,如果存在任何侦听器,则应首先删除该项以断开与该对象的任何联系,以便进行适当的内存收集。这些规则与JS和jQuery相同吗


谢谢

它们没有区别。所以你可以继续使用第二种方法。当你用这个的时候

$('#itemWindow').html(newItem1);
$('item1')
$('item2')
将被替换。因此,您可以跳过手动删除这些

正如@glavić在评论中提到的,如果您查看jQuery源代码中
html
方法的定义 最后你会发现它有这些线条

 if ( elem ) {
    this.empty().append( value );
 }
在这种情况下,
elem
为真。因此,元素将被
清空
,然后新元素将被
追加

如果它们有监听器,那么您必须以某种方式绑定监听器,以便它能够与动态添加的元素一起工作,比如使用

$(“#item1”)。remove();将删除id为item1的元素


$('#item1').html(newItem1);将在id为item1的元素中设置html。如果您想具体说明实际要删除的内容,例如,如果有一个元素需要删除,但另一个元素不需要删除,那么我建议使用第一种方法。如果你只是想每次都替换所有东西,那么请随意使用或,唯一的问题是什么对你来说更具可读性

如果项有任何侦听器,则第一种方法更合适
.remove()
删除项目本身和所有绑定事件。若项目已删除,但未删除事件,则将来可能会发生错误。但是如果没有有界事件,可以使用第二种方法,因为代码更少。

我认为关于侦听器的答案将取决于您是否希望重用侦听器……如果查看jQuery源代码,您会注意到html()方法的工作方式类似于>this.empty().append(value)。在不需要的地方,你的工作会变得复杂;-)用于较短的代码,如>$('#itemWindow').html(newItem1.append(newItem2);