2011-08-26 27 views
3

我正在寻找一种方法来遍历所有YUI小部件。我希望能够在所有小部件上调用一个函数。遍历所有YUI小部件

我试图选择所有与类yui3-widget的元素,但这样我只得到小部件呈现给div元素。我想要的是所有的物体。所以这似乎并没有做我想要的:

YUI().use ('*', function (Y){ 
    $('.yui3-widget').each (function (idx, elem) { 
     var id = elem.getAttribute('id'); 
     console.log (Y.Widget.getByNode(id)); 
     console.log ('#'+id); 
    }) 
}) 

做你们任何人都有一个建议如何这可能吗?

回答

3

要看的三件事:

.1。结合库(YUI和Jquery)是可能的,但是非常混乱。虽然我们可以认为它是必要的,并且可以随身携带。

.2。 “getByNode”期望YUI节点或选择器字符串。所以这行应为:

console.log (Y.Widget.getByNode('#' + id)); 

0.3。 YUI().use (...行声明一个新的YUI沙箱,它不包含任何小部件。您的节点列表正在循环遍历页面上的所有匹配“.yui3-widget”项目,但这些小部件都没有在您的新沙箱中注册,因此Y.Widget.getByNode('#' + id)将返回空值。为了解决这个问题,你需要把你的代码放在创建窗口小部件的沙箱内,或者为你的“使用”函数调用一个指向沙盒的指针。例如:

var sandbox = YUI().use('*', function (Y){ 

    // widgets defined here 
}); 

sandbox.use ('*', function (Y){ 
    $('.yui3-widget').each (function (idx, elem) { 
     var id = elem.getAttribute('id'); 
     console.log (Y.Widget.getByNode('#' + id)); 
     console.log ('#'+id); 
    }) 
});