无法使用YUI将click事件绑定到类的所有实例

时间:2014-04-13 14:34:54

标签: yui yui3

我试图使用YUI中的.all方法将click事件绑定到类的所有实例。由于某种原因,它根本不起作用。这是代码:

YUI().use('io', 'json-parse', 'handlebars', 'node', 'event', function(Y) {
    Y.all(".edit-user-button").on("click", function() {
        alert("Click worked");
    });
});

正如您所看到的,我已经导入了事件和节点模块,但是当我单击具有该类编辑用户按钮的按钮时没有任何反应。

编辑:我使用Handlebars动态生成类edit-user-button的元素。如果该类已经存在于DOM中但由于它是动态加载而失败,否则这将起作用。

2 个答案:

答案 0 :(得分:3)

尝试让容器将事件委托给您的按钮。

Y.one(".container").delegate('click', function(){
   alert("Click worked");
}, ".edit-user-button")

有关此内容的更多信息:http://yuilibrary.com/yui/docs/event/delegation.html

希望这有帮助!

答案 1 :(得分:2)

原因可能是具有类'编辑 - 用户 - 按钮'是动态创建的(o本身是动态添加的),当设置事件处理程序的代码运行时,它们还不在DOM中。

这可以使用名为Event Delegation

的技术来解决

使用YUI库,您可以使用delegate方法应用该技术:

Y.one(".someContainer").delegate('click', function(){
   alert("Click worked");
}, ".edit-user-button")

特定于YUI事件委派here的信息。