javascript - Using Handlebars.js helpers to create active elements with jQuery? - Stack Overflow

Is it possible to within a Handlebars.js helper to create elements using jQuery and attach event handle

Is it possible to within a Handlebars.js helper to create elements using jQuery and attach event handler to them? I'd like to be able to create active elements using helpers.

Example:

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

In the handlebars template I instantiate the button like this:

{{{button "Click Me!"}}}

I understand that this can not work, since the jQuery's html() function `removes' the event handler... but simply returning button obviously does not work either. Handlebars helpers should be able to return DOM nodes, but this is not possible, right? I tried to return button.get(), but without success.

Any ideas?

Is it possible to within a Handlebars.js helper to create elements using jQuery and attach event handler to them? I'd like to be able to create active elements using helpers.

Example:

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

In the handlebars template I instantiate the button like this:

{{{button "Click Me!"}}}

I understand that this can not work, since the jQuery's html() function `removes' the event handler... but simply returning button obviously does not work either. Handlebars helpers should be able to return DOM nodes, but this is not possible, right? I tried to return button.get(), but without success.

Any ideas?

Share Improve this question edited Sep 13, 2021 at 18:47 Brian Tompsett - 汤莱恩 5,89372 gold badges61 silver badges133 bronze badges asked Nov 5, 2011 at 11:14 Stefan K.Stefan K. 1681 silver badge8 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 3

What you could do is create a function outside of registerHelper to be called onClick. So the code for that would look like this:

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

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744849896a4597065.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信