我開發了一個自定義dijit模板小部件。我必須對containerNode
的孩子做一些DOM操作。一切工作正常,除了當我有兩個小工具加載,並且containerNode
的孩子的操縱似乎影響相同類型的所有小工具,而不僅僅是小工具的特定實例。處理多個dijit小部件實例的DOM
我想我已經把範圍縮小到這部分我的代碼,我「卸載」的「孩子們」我是執行以下功能:
popPage: function() {
if (this._pagesLoaded) {
var i = this._pagesLoaded - 1;
var y = this.containerNode.children[i];
if (typeof y !== "undefined") {
this.containerNode.removeChild(y);
}
var page = this.pages.pop();
page.unsetPage(); //Internal sub object cleanup
page.destroyRecursive();
this.endPageLoaded--;
this._calcPagesLoaded(); //recalcs this._pagesLoaded
}
},
當我似乎執行此,似乎該子項將從所有Widgets的DOM中移除。它只是沒有任何意義,並且手動檢查Firebug中的東西(例如dijit.byId("logScroller62").containerNode.children
)表明瀏覽器認爲所有東西都是獨立的,並且我爲兩個不同的實例獲得了兩組不同的結果集。
是的,據我所知,但似乎發生的是,我執行上述代碼從Widget實例A中刪除子DOM節點,但它從Widget的所有實例中刪除相同的子節點索引(例如B,C等)。 – Kitson 2010-02-27 11:36:40
好吧,看不到你的代碼,但我猜測this.containerNode.children是一個數組,它在多個實例中共享,因爲你在某個東西的原型中聲明瞭它。 – 2010-03-02 16:30:48
是的,這也是我的猜測......我將回顧代碼,但是我不直接聲明它,因爲'containerNode'由'dijit._Templated' HTML模板自動設置。不知怎的,我可能搞砸了,但我不這麼認爲。 – Kitson 2010-03-07 13:50:49