我想设置一个简单的jQuery onClick事件,以使UI在手柄模板上动态化。在特定点击后我想知道addClass()。
考虑HTML(由把手生成)
{{#if hasButton}}
<div id="container">
<button type="submit" class="myButton">Click me!</button>
</div>
{{/if}}
即:在按钮内单击后,其容器将收到一个加载类,该类将使用CSS创建交互。
$(".myButton").on("click", function(event){
$(this).parent().addClass("loading");
});
这个代码应该放在我的把手模板上,还是应该把它重写成一个特定的助手呢?是否有任何可以提供的例子,以便我可以研究它然后开发类似的东西?
提前致谢!
答案 0 :(得分:39)
如果您在文档级别定义事件处理程序,则无需在每个动态DOM更新上重新附加事件处理程序:
$(document).on('click','li',function(){
alert( 'success' );
});
希望这有帮助! : - )
答案 1 :(得分:14)
在将节点插入DOM HTML之后,您必须刷新Jquery侦听器。
var source = "<li><a href="{{uri}}">{{label}}</a></li>";
var template = Handlebars.compile(source);
var context = {"uri":"http://example.com", "label":"my label"};
$("ul").append( template(context) );
// add your JQuery event listeners
$("li").click(function(){ alert("success"); });
答案 2 :(得分:0)
我不确定你的问题究竟是什么。
如果您将JavaScript保存在* .js文件中,perhaps
使用parent()而不是prev()
,则在这种特定情况下,这样正确。