2013-04-06 113 views
2

使用Handlebars和OpenDatabase我有一个小问题。当你点击一个链接并没有任何反应时事件click Handlebars

我的JS。

db.transaction(function (tx) { 
    tx.executeSql('SELECT * FROM exhibition', [], function (tx, results) { 
    var source = document.querySelector("#exhibition-template").innerHTML; 
    var data = []; 
    template = Handlebars.compile(source); 

    for(var i=0;i < results.rows.length; i++) { 
     data.push(results.rows.item(i)); 
    } 
    var context = (data); 
    if (language == 'pl') 
    { 
    var html = template({o:context,language_pl:true}); 
    }else{ 
    var html = template({o:context,language_en:true}); 
    } 
    document.querySelector("#template").innerHTML = html; 

}, null); 

$(".exl").on("click", function(){ 
    alert('event click!'); 
}); 

}); 

和我的HTML

{{#each o}} 
    <a href='' class='exl'>{{name_pl}}</a> 
    {{/each}} 

回答

9

生成的DOM被添加到页面之前,你可能会结合事件。所以,你可以等待Handlebars模板被渲染(在你的情况下,这是从tx.executeSql回调的平均绑定事件)。或者您可以使用event delegation with jQuery

$(document).on("click", ".exl", function(){ 
    alert('event click!'); 
}); 
+0

谢谢。有用! – 2013-04-06 20:37:20