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

Iam*_*ace 5 html jquery append

我在另一个内部有两个div元素.有时,从用户交互性中删除这两个项目,并放置两个新元素.

首先删除现有元素是否合适?或者只是覆盖html?或者甚至重要吗?

$('#item1').remove();
$('#item2').remove();
$('#itemWindow').append(newItem1);
$('#itemWindow').append(newItem2);
Run Code Online (Sandbox Code Playgroud)

或者干脆

$('#itemWindow').html(newItem1);
$('#itemWindow').append(newItem2);
Run Code Online (Sandbox Code Playgroud)

一个是较少的代码,但是应该删除项目吗?这些项目没有任何听众,但如果他们这样做了,那会有所作为吗?

我是一名潜入JS和jQuery的ActionScript开发人员.在AS中,如果存在任何侦听器,则首先删除该项以切断与该对象的任何关系,以便正确收集内存.这些规则与JS和jQuery相同吗?

谢谢!

Pra*_*Nag 3

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

\n\n
$(\'#itemWindow\').html(newItem1);\n
Run Code Online (Sandbox Code Playgroud)\n\n

$(\'#item1\')并将 $(\'#item2\')被替换。因此您可以跳过手动删除它们的过程。

\n\n

正如评论中提到的 @glavi\xc4\x87 如果你查看htmljQuery 源代码中方法 的定义https://github.com/jquery/jquery/blob/master/src/manipulation.js#L213 \n你会发现最后有这些行

\n\n
 if ( elem ) {\n    this.empty().append( value );\n }\n
Run Code Online (Sandbox Code Playgroud)\n\n

在这种情况下,哪里elem是正确的。所以元素将是emptied,然后新元素将是appended

\n\n

如果他们有侦听器,那么您必须以某种方式绑定侦听器,以便它可以与动态添加的元素一起使用,例如使用$.on

\n