2011-10-25 25 views
6

Dojo有沒有在DOM元素中查找所有小部件後代的方法?我使用下面的例子,它只會列出元素的子元素,在這種情況下,任何小部件都是文檔對象的子元素,但不是所有後代或嵌套小部件。希望這是明確的。Dojo中有沒有一種方法可以在DOM元素中查找所有窗口小部件後代?

var widgets = dijit.findWidgets(dojo.doc); 
dojo.forEach(widgets, function(w) { 
    console.log(w); 
}); 

我可以只寫我自己的遞歸函數,但我想確保我不是一個道場方法,它已經這樣做錯過了。

非常感謝

+0

僅僅是明確的,你想一個函數來獲取所有低於れ小部件,包括其嵌套在其他部件的部件? – BuffaloBuffalo

+0

@ screenm0nkey,你有沒有最終找到解決方案?我也需要這個確切的功能。 – carmenism

回答

9

嗯,dijit.findWidgets(parentWidget.domNode)

編輯哦,現在我需要findWidgets不會遞歸搜索。

我檢查了dijit.findWidgets源代碼,它所做的只是檢查具有在dijit註冊表中表示的widgetid屬性的節點。下面的版本使用dojo.query做遞歸同樣的搜索:

function findEvenTheNestedWidgets(innitialNode){ 
    return dojo.query("[widgetid]", innitialNode) 
    .map(dijit.byNode) 
    .filter(function(wid){ return wid;}) //filter invalid widget ids that yielded undefined 
} 
+0

嘿丟失。這是一個猜測嗎?我不認爲有一個dojo.findWidgets方法。 – screenm0nkey

+0

oops,我的意思是dijit ...重要的是你可以選擇widget的domNode來開始搜索,而不是搜索文檔中的所有小部件。 – hugomg

+0

但是,這仍然只給了我直接在該domNode下的孩子,而不是嵌套在兒童和孩子的孩子等內部的小部件等。 – screenm0nkey

相關問題