2011-06-30 106 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

相关问题