2010-02-14 88 views
1

我使用下面的代码从DOM树中删除一个元素:删除HTML元素的编号

function onItemDeleted(name) { 

      $("#" + name).remove();      

     } 

这会是坏的表现,因为我没有指示对元素的任何父。该元素是包含在TABLE元素中的TR。该元素的DOM搜索将从顶部开始,可能是BODY。所以会是这样的:

BODY => DIV => TABLE => TR(发现)

如果我发现TR的父母是表将搜索是这样的:

表 - > TR

我不知道上面是否会是真的,因为我认为搜索始终始于根节点。

+0

您是否遇到任何性能问题? – 2010-02-14 18:02:05

+0

不,我没有遇到任何性能问题。 – azamsharp 2010-02-14 18:04:34

回答

7

jQuery优化ID搜索。所以,$("#" + name)实际上与$(document.getElementById(name))相同。从source,线120(1.4):

// HANDLE: $("#id") 
} else { 
    elem = document.getElementById(match[2]); 
+0

我认为在短时间内执行大量删除操作时,持有父母会更有意义。因为,那么我们不必一次又一次搜索元素的DOM树。 – azamsharp 2010-02-14 18:15:36

+0

顺便说一句,它不和* getElementById相同,因为ID内的一个'.'或':'字符(都是有效的)会破坏选择器的版本。 – bobince 2010-02-14 18:36:06

3

性能差异可能可以忽略不计。

0

我想,当你找到ID元素,查找时间应该是O(1),因为只能有一个具有该ID的元素。