我在另一个元素中有两个div元素。有时,从用户交互性中删除这两个项目,并放置两个新元素。
首先删除已有的元素合适吗?或者只是覆盖html?或者这有什么关系呢?
$('#item1').remove();
$('#item2').remove();
$('#itemWindow').append(newItem1);
$('#itemWindow').append(newItem2);
或者简单地说
$('#itemWindow').html(newItem1);
$('#itemWindow').append(newItem2);
一个是较少的代码,但是否应该删除该项目?这些项目没有任何监听程序,但是如果它们有监听程序,这会有什么不同吗?
我是一名深入研究JS和jQuery的ActionScript开发人员。在AS中,如果存在任何侦听器,最好先删除该项以切断与对象的任何联系,以便进行正确的内存收集。这些规则是否适用于JS和jQuery?
谢谢!
发布于 2012-06-01 20:42:42
它们没有区别。所以你可以继续使用第二种方法。就像你使用这个
$('#itemWindow').html(newItem1);
$('#item1')
和$('#item2')
将被替换。因此,您可以跳过手动删除这些文件。
正如@glavi方法在注释中提到的那样,如果你查看这里的https://github.com/jquery/jquery/blob/master/src/manipulation.js#L213源代码中的html
方法的定义,你会发现它的末尾有以下几行
if ( elem ) {
this.empty().append( value );
}
其中,在本例中,elem
为真。因此,元素将是emptied
,然后新元素将是appended
。
如果它们有监听程序,那么您必须以某种方式绑定监听程序,以便它可以使用动态添加的元素,如使用$.on
发布于 2012-06-01 20:43:16
$('# item1 ').remove();将删除id为item1的元素
$('# item1 ').html(newItem1);将在id为item1的元素中设置html
发布于 2012-06-01 20:47:05
如果您想要具体说明您实际要删除的内容,比如您有一个元素需要删除,而另一个元素不需要删除,那么我建议使用第一种方法。如果您打算每次都替换所有内容,那么可以随意使用或,唯一的问题是哪个对您来说更具可读性。
https://stackoverflow.com/questions/10857061
复制相似问题