遍历所有的YUI部件。

3
我正在寻找一种遍历所有 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个回答

3

需要注意的三个问题:

1. 合并库(YUI 和 Jquery)是可能的,但会非常令人困惑。虽然我们可以假设这是必要的并继续进行。

2. "getByNode" 需要一个 YUI Node 或选择器字符串。因此,该行应更改为:

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

.3. 这行代码 YUI().use(...) 声明了一个新的 YUI 沙盒,其中不包含任何小部件。你的节点列表正在循环遍历页面上所有匹配的“.yui3-widget”项,但这些小部件都没有在您的新沙盒中注册,因此Y.Widget.getByNode('#' + id)将返回 null。要纠正这个问题,您需要将代码放在创建小部件的沙盒内或获取指向该沙盒的指针以供您的"use"函数调用。例如:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接