2011-06-30 104 views
0

我有一個基於目錄結構構建列表的腳本。它從WebDAV資源讀取,以發現鎖,每個文件,並附加節點和類,以便將該結構顯示爲一系列嵌套列表,如果列表項具有鎖定列表項上的類。如何知道異步遞歸活動何時完成?

這一切都很好用,我現在想要做的是爲創建的列表節點分配功能。

的列表項的異步回調的範圍內創建我可以添加這一功能,但我不知道是否有任何常用的方法在那裏可能等一系列潛在的遞歸異步活動(X級包含Y資源的目錄)完成,並在那一刻安全地對整個創建的節點組執行操作。

我之所以問,而不是走在前面,並且每個異步回調對發現的資源中添加功能,是因爲我使用YUI3,他們有這樣的種種便利:

// Add functionality to items meeting the CSS selector criteria 
Y.all('#select_projects_list li.file:not(#select_projects_list li.locked)').on('click', function(e){ 
    // do stuff with 'this' 
}); 

哪裏會似乎如果我這樣做了,它可能比在每個異步回調中重複類似的功能更有效,因爲最終可能會有數百個資源。

僞代碼解決方案,想法和方法表示讚賞。

歡呼聲。

回答

1

使用事件代表團。一般來說,如果您發現自己使用Y.all(...).on(...),則應該使用事件委派。

試試這個:

Y.one('#select_projects_list').delegate('click', handleClick, 'li.file:not(.locked)'); 

​​將被稱爲該內幕#select_projects_list任何立有類「文件」,不具備一流的「鎖定」發生任何點擊。如果您以後添加,刪除或更改這些li節點中的任何一個,則不需要再執行任何操作或更改任何事件訂閱。一位代表聽衆會做。在handleClick內部回調中,this將是li節點。

http://developer.yahoo.com/yui/3/event/#delegate

+0

漂亮。工作了一個魅力,非常棒,我可以在節點存在之前委託功能,謝謝盧克! – danjah

相關問題