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

发布于 2024-12-05 22:49:31 字数 587 浏览 0 评论 0原文

我有一个用于将元素添加到列表的函数,我希望在与该列表交互时运行事件,例如单击。如果我使用文档对象执行此操作,则效果很好,但是如果我将 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');
    });
};

I have a function which i used to add elements to a list, I want to have events run on interaction with this list, e.g. click. If I do it using the document object it works well however if I use jQuery with underscore templates the element is successfully appended but the events will not trigger.

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');
    });
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

壹場煙雨 2024-12-12 22:49:31

您支持 template() 返回一个元素吗?如果它返回一个字符串(大多数模板系统都会这样做),则单击事件将不起作用。

不关闭 click 方法也存在语法错误。

are you shore that template() returns a element. if it returns a string (witch most template system do) that click event wont work.

also there's syntactic errors with not closing the click method.

苹果你个爱泡泡 2024-12-12 22:49:31

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

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

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

so with the help of megakorre this is the answer.

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

li.click(function(e) {
   alert('click');
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文