使用Handlebars.js助手用jQuery创建活动元素?

Ste*_* K. 8 javascript jquery javascript-events handlebars.js

是否可以在Handlebars.js帮助器中使用jQuery创建元素并将事件处理程序附加到它们?我希望能够使用帮助器创建活动元素.

例:

Handlebars.registerHelper("button", function(title) {
    var button = $('<button>').text(title);
    button.click(function() {
        alert("Button " + title + " clicked.");
    });
    return $('<div>').append(button).html();
});
Run Code Online (Sandbox Code Playgroud)

在把手模板中,我实例化按钮,如下所示:

{{{button "Click Me!"}}}
Run Code Online (Sandbox Code Playgroud)

我知道这不行,因为jQuery的html()函数`删除'事件处理程序......但是简单地返回按钮显然也不起作用.Handlebars helpers应该能够返回DOM节点,但这是不可能的,对吧?我试图返回button.get(),但没有成功.

有任何想法吗?

sin*_*tu1 3

您可以做的是在外部创建一个registerHelper名为 onClick 的函数。因此,其代码如下所示:

Handlebars.registerHelper("button", function (text) {
    var button = $('<button></button>').text(text).attr('onclick', 'button_clickEvent()');
    return $('<div></div>').append(button).html();
});

var button_clickEvent = function () {
    alert("Button " + $(this).text() + " clicked.");
};
Run Code Online (Sandbox Code Playgroud)