我的简单脚本通过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);
})
但它从未显示任何内容
答案 0 :(得分: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>
属性...我认为这不是确切代码的另一个原因给你带来麻烦。 :)