遍历所有YUI小部件

时间:2011-08-26 09:32:38

标签: javascript 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);
    })
})

你们有没有人建议如何做到这一点?

1 个答案:

答案 0 :(得分:3)

要看三件事:

0.1。组合库(YUI和Jquery)是可能的,但非常令人困惑。虽然我们可以假设它是必要的并随之滚动。

0.2。 “getByNode”期待YUI节点或选择器字符串。所以该行应为:

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

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

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);
    })
});