2012-04-22 62 views
0

我在一個大量使用Ajax請求的網站上工作,該請求在DOM中構建基於選項卡的結構。我擔心的是,DOM將堆積如此多的選項卡和元素,以至於JQuery選擇器最終表現不佳。阻止jQuery遍歷文檔的部分

有沒有辦法維護一個大的DOM,但提供了一個「提示」排除某些部分。例如,我想維護DOM中的元素,但只有我的JQuery選擇器適用於活動選項卡。

我希望會有某種形式的「忽略」標籤的,我可以動態地應用到無源部分

也許是存儲在數據字典中的活動標籤元素的替代,並把他們進出的DOM,因爲它們成爲焦點。

+0

你能發表一些代碼嗎?這取決於你想要做什麼 – elclanrs 2012-04-22 23:47:19

+0

這更多的是一個概念性問題。我正在尋找一種方法來標記DOM內容以被JQuery忽略 – TGH 2012-04-22 23:48:17

+0

你所要求的答案基本上是 - 不!另一方面,如果它具有唯一標識符的結構,那麼javascript可以在它開始成爲問題之前處理一個相當大的DOM,而我的經驗是瀏覽器渲染在此之前就會成爲問題。 – adeneo 2012-04-22 23:56:32

回答

1

可以使用context方法:

)最初傳遞到jQuery的(該DOM節點上下文;如果沒有通過,那麼上下文將可能是文檔。

http://api.jquery.com/context/

+0

這是一個潛力解。我必須再去探索一下 – TGH 2012-04-22 23:55:42

1

只是提供一個選擇器,告訴jquery你想要什麼。例如,給每個標籤一個id。然後,如果你想獲得的所有a標籤在news標籤:

$("#news a") 

jQuery將隨後只知道在#news看。

id查詢通常非常有效,因爲只有一個元素可以有給定的id

+0

不,這並不總是一種選擇,因爲某些選擇器可以在各個部分之間重複使用,而且我也沒有奢侈的提供這樣的粒度選擇器 – TGH 2012-04-22 23:49:24

+0

如果您不喜歡不控制代碼,那麼你很可能不幸運。 – 2012-04-22 23:51:50

0

在您的選擇器上,您可以傳遞一個上下文作爲第二個參數來告訴jquery文檔的哪部分外觀,比如說:​​這樣可以減少要查找的節點數量。 參考:http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx#tip9

+0

我正在尋找一種解決方案,不提供粒度選擇器,因爲它並不總是一些共享代碼的選項 – TGH 2012-04-22 23:51:09

+0

那麼,我發佈的參考可以幫助您找到您要找的內容 – loki 2012-04-22 23:54:59

1

正如我在評論中說,你用你選擇的方式取決於你的代碼。但是,如果您最終選擇了一個巨大的選擇器列表,您可以隨時使用任何規則集合filter()

$elements.filter(function(){ 
    return $(this).parent('.foo').length; // Only elements with parent `.foo` 
}); 
+0

由於元素的數量,關注點更多的是我將要處理的搜索時間 – TGH 2012-04-22 23:53:48