JQuery:如何将事件附加到模板对象?

时间:2011-04-12 01:42:37

标签: jquery templates

我有一个生成图像的模板,我将它绑定到div。

<script id="postTemplate" type="text/html">
<div class="post_1">
    <div class="postImage"><img src="${ImageUrl}" alt="Image"></div>
</div>
</script>

然后我绑定数据

<script>
    $("#postTemplate").tmpl(clientData).appendTo("#imagesArea");
</script>

现在,我想要的是为我刚刚创建的事件添加一个事件处理程序。

之类的东西
("template img").error(function() {});

向click之类的东西添加处理程序似乎有效,但在我可以添加处理程序之前就会触发错误。

6 个答案:

答案 0 :(得分:5)

不确定你的选择器“模板img”是什么引用,因为我没有看到任何模板元素。

$(function(){

    $('template img').live({
      click: function() {
        // do something on click
      },
      error: function() {
        // do something on error
      }
    });
});

http://api.jquery.com/live/

答案 1 :(得分:3)

$("template").on("error", "img", function(){});

答案 2 :(得分:1)

怎么样

$("#postTemplate img").click(function() { alert('clicked'); });
添加模板后必须调用

。否则,您必须使用直播

答案 3 :(得分:0)

我不确定我是否得到了您的问题,但我猜您可以在将其附加到#imagesArea元素之前存储对模板中生成的对象的引用,将事件附加到该引用应该如下:

var myGeneratedContent = $("#postTemplate").tmpl(clientData)
myGeneratedContent.appendTo('#imagesArea');
myGeneratedContent.click(function() { [...] });

答案 4 :(得分:0)

("template img").bind("error",function() {});

答案 5 :(得分:0)

您可以使用.live(),即使之后创建了元素,也会绑定事件

$("#imagesArea img").live('click', function(){
   //do stuff here
});