jquery模板引擎,如何绑定事件

时间:2011-05-16 12:38:41

标签: jquery templates

有没有办法传递函数绑定到jQuery模板引擎? http://api.jquery.com/tmpl/

如果我创建没有模板的HTML,我会这样做:

jQuery("<a>link</a>").click(function(){alert('hi!')}).appendTo( "#forms_container" );

如何使用jQuery模板执行此操作?

------------ EDIT 我在这里找到了一些图书馆 http://knockoutjs.com/documentation/template-binding.html

并且看起来像jQuery.live()

是否还有其他方法可以将函数绑定到模板,或者这种方式主要用作默认值?

----------- EDIT 好吧,那就让它成为.delegate。我认为对于我的小任务来说,这足够了,而不会增加Knockout的复杂性

2 个答案:

答案 0 :(得分:4)

与Ian相似,但在实施方面略有不同:

jQuery('#forms_container').delegate('a', 'click', function() {
   //Click event, with context (faster)
});

这意味着无论发生什么变化,forms_container中的所有链接都将具有该click事件。这与Ian(完全合法)使用live的不同之处在于它具有上下文,因此事件不需要一直冒泡。如果你给它上下文,你可以使用live(从1.4开始)完成同样的事情,但我更喜欢delegate的语法。

答案 1 :(得分:0)

通过(类或类似的或基于父容器)为您的链接标识它。然后使用.live

<script id="movieTemplate" type="text/x-jquery-tmpl">
    <div id="xyz"><a class="tmplClick">${link}</a> </div>
</script>

然后:

$('a.tmplClick').live('click',function(){
    alert('clicked in template');
});