2011-11-05 54 views
8

Handlebars.js助手可以使用jQuery创建元素并将事件处理程序附加到它们上吗?我希望能够使用助手创建活动元素。使用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(); 
}); 

在车把模板我实例按钮是这样的:

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

我明白,这可不行,因为jQuery的HTML()函数'删除的事件处理程序...但只是返回按钮显然不工作。 Handlebars助手应该能够返回DOM节点,但这是不可能的,对吧?我试图返回button.get(),但没有成功。

任何想法?

回答

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

谢谢,这将工作,但我实际上需要在辅助方法中构建函数。现在我使用[KnockoutJS](http://knockoutjs.com/)来处理这个问题,并以非常优雅的方式处理更多的东西。 –

+0

@StefanK。好的,但这是否回答你的问题? – sinemetu1

+0

是的,是的。谢谢。 –