在把手上处理jQuery onClick事件

时间:2013-07-09 12:33:06

标签: javascript jquery handlebars.js

我想设置一个简单的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");
});

这个代码应该放在我的把手模板上,还是应该把它重写成一个特定的助手呢?是否有任何可以提供的例子,以便我可以研究它然后开发类似的东西?

提前致谢!

3 个答案:

答案 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(),则在这种特定情况下,这样正确。