15

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

这段代码应该放在我的车把模板上,还是应该将它重写为特定的帮助程序?是否可以提供任何示例,以便我可以研究它然后开发类似的东西?

提前致谢!

4

3 回答 3

42

如果您在文档级别定义它们,则无需在每次动态 DOM 更新时重新附加事件处理程序:

$(document).on('click','li',function(){
   alert( 'success' );
});

希望这可以帮助!:-)

于 2014-02-15T07:21:47.367 回答
15

在将节点插入 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"); });
于 2013-09-29T13:05:45.360 回答
0

我不确定你的问题到底是什么。如果您将 JavaScript 保存在 *.js 文件中,在这种特定情况下perhaps使用 parent() 代替,这样的做法是正确的。prev()

于 2013-07-09T13:29:53.190 回答