2011-11-05 55 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

是的,是的。謝謝。 –