2010-02-14 89 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的元素。