从具有下划线模板的另一个函数jQuery内部调用的事件不起作用

时间:2011-09-22 21:27:24

标签: javascript jquery underscore.js

我有一个用于向列表中添加元素的函数,我希望在与此列表交互时运行事件,例如单击。如果我使用文档对象,它工作得很好但是如果我使用带有下划线模板的jQuery,元素会成功附加,但事件不会触发。

var addElement = function(parentElement){
    //would work
    this.thisElement = document.createElement('li');
    parentElement.appendChild(thisElement);
    $(this.thisElement).click(function(event){
        alert('working');
    });

    //doensn't work
    this.template = _.template($('#fileListEntity').html());
    var li = this.template();
    $(parentElement).append(li);
    $(li).click(function(e) {
        alert('notWorking');
    });
};

2 个答案:

答案 0 :(得分:2)

你支持template()返回一个元素。如果它返回一个字符串(大多数模板系统都这样做),那么点击事件就不会起作用。

还有没有关闭点击方法的语法错误。

答案 1 :(得分:0)

所以在megakorre的帮助下,这就是答案。

this.template = _.template($('#fileListEntity').html());
var li = $(this.template({name:doc.name}));
$(parentElement).append(li);

li.click(function(e) {
   alert('click');
});