2013-04-10 49 views
1

從我的測試中,似乎dojo的query()函數僅從屬於頁面DOM一部分的元素中進行選擇。dojo如何查詢已從DOM中刪除的節點

例如,假設我有一個名爲rootNode的節點,它有一些someClass類的後代。此代碼:如果rootNode已從DOM刪除

var nodeList = query(".someclass", rootNode);

會返回一個空的節點列表(但是,當然,如果rootNode是DOM的一部分,它將返回所有節點與someClass

我的問題:?有沒有在這種情況下使用query()如果不是這樣,什麼是處理此操作的首選方式在我看來像一些的節點列表的方法可以用一個過濾器(除去和場所使用),但這不完全相同。

+0

我不明白你在做什麼。 – Jess 2013-04-10 18:49:53

+0

抱歉不清楚。我有一個div,我已經從頁面的DOM中刪除,但一直保持參考。稍後,我想查詢該div以查找與特定條件匹配的某些後代,然後對這些元素執行某些操作。 – 2013-04-10 18:55:31

回答

1

我的回答竟然是非常簡單的:雖然我沒有在文檔中找到它,你可以簡單地調用query()上的NodeList。例如

var nodeList = query.NodeList(); 
nodeList.push(rootNode); 
var results = nodeList.query(yourSelector); 

不過要注意的:如果yourSelector是一個唯一的ID和rootNode已從DOM刪除,它似乎並沒有工作。其他類型的選擇器(類,兒童等)似乎工作。我不知道這是否是Dojo的一個錯誤...

+0

+1好的答案。 – Jess 2013-04-12 12:57:44

1

您可以獲得一個dojo NodeList作爲您的dojo.query的返回結果。然後您可以使用nodes.mapnodes.every查找您想要的元素。

http://dojotoolkit.org/reference-guide/1.9/dojo/NodeList.html

+0

謝謝 - 是的,這是可行的,但不像使用'query'時,只是在NodeList中的節點不感興趣,而是在它們和它們的所有子節點中都是如此。 – 2013-04-12 12:53:42

+0

我會在這裏留下這個答案,因爲這是你的扣籃助攻。 :)也許有人會發現它有用。 – Jess 2013-04-12 12:59:32