0

我的简单脚本是通过 jquery 附加一些元素。
我想做的是为那些创建的元素添加一些 ajax 调用。
问题是事件永远不会对这些元素起作用,我尝试了很多 Jquery 方法,但都失败了。

$("#currentbuild").append('<li class="cancelevent"></li>');
$('.cancelevent').bind("click",function(e) {
                        var eventid = $(this).attr('id');
                        e.preventDefault();
                        alert(eventid);
                })

我也试过

$("#currentbuild").append('<li class="cancelevent"></li>');
$('.cancelevent').on("click",function(e) {
                        var eventid = $(this).attr('id');
                        e.preventDefault();
                        alert(eventid);
                })

但它从不显示任何东西

4

1 回答 1

1

你几乎是正确的:

$("#currentbuild").append('<li class="cancelevent"></li>');
$('#currentbuild').on("click",".cancelevent",function(e) {
    var eventid = $(this).attr('id');
    e.preventDefault();
    alert(eventid);
});

这会添加一个click处理程序#currentbuild(它不是动态的,因此总是在 DOM 中)。但是,它不会对自身的点击做出反应,而是只侦听自身内部的点击,并且只侦听具有cancelevent. 而且由于您没有将点击处理程序添加到可以动态添加和/或删除的元素,因此处理程序将始终存在。

编辑:正如@tcovo 在下面的评论中指出的那样,您的代码应该可以像您在此处发布的那样工作。我认为这不完全是您的代码,并且append作为另一个事件处理程序的结果动态发生(而不是您在示例中建议的页面加载)。

此外,var eventid = $(this).attr('id');在您的示例中也不起作用,因为id...<li>我认为这不是给您带来麻烦的确切代码的另一个原因。:)

于 2013-04-11T21:05:02.140 回答