我正在寻找一种迭代所有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);
})
})
你们有没有人建议如何做到这一点?
答案 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);
})
});