2009-11-26 62 views
0

我有一些代碼在其中創建一個帶有Ajax調用(href屬性)的dijit.Dialog來填充內容。如何獲得dojo.query爲dijit重新創建值。對話框

我該如何解析返回的內容以將dojo.connect一個click事件添加到返回內容中的鏈接。

但是當我做了dojo.query(「A」,this.current_popup.domNode)我得到一個空數組回

有誰知道怎樣才能得到一個可以連接的onclick所有返回的內容?

保羅

+0

是您Ajax請求回調中的'dojo.query'行? – 2009-11-26 16:02:31

+0

沒有調用是在一個函數,運行窗口小部件啓動,然後顯示調用 是內容正在加載使用構建支持我設置在arg集合href – Pbearne 2009-11-26 20:49:22

回答

2

這是更便宜的事件處理程序只是綁定到對話窗口小部件的DOM節點,並使用事件代表團捕捉到任何「一個」點擊。這樣,您可以避免任何事件處理程序清理,尤其是在對話框內容頻繁更改的情況下。如果您使用小部件的連接方法執行工作,則可以避免事件處理程序清理。

所以,如果你正在做的dijit.Dialog方法裏面的連接,你可以使用類似:

this.connect("onclick", function(evt){ 
    var node = evt.target; 
    if("a" == node.nodeName.toLowerCase()){ 
     //node is an a tag, do what you want with it, 
     //for example, read node.href to get the URL attached to it. 
     //If you want to prevent following that URL and prevent further 
     //event bubbling, stop the event: 
     dojo.stopEvent(evt); 
    } 
}); 

如果你正在做這方面工作的小部件實例之外,而不是使用此.connect,使用widgetInstance.connect(),假設widgetInstance是一個指向dijit.Dialog實例的變量。

通過使用該版本的連接,小部件將在對話框小部件被銷燬時自動註銷事件處理程序,並保持內存配置文件處於檢查狀態。

+0

我喜歡這種方法的感覺我認爲我可以爲此添加一個類測試以控制點擊操作的Href。 – Pbearne 2009-11-26 20:53:34

0

的一種方式,我發現這樣做是爲了增加一個延遲連接部件

dojo.connect(this.current_popup, "onDownloadEnd", function(){ 
     dojo.query("a.popup",this.current_popup).forEach(function(node) { 
      // add your function add here 

     }); 
}); 

它運行後Ajax調用完成,所以你現在可以在DOM中找到的對象