这个问题在这里已有答案:
我列出了这个脚本的几行
$("a.remove").click(function(){
var id = $(this).attr('id')
var user = $(this).attr('value')
$.ajax({
success : function(){
var url = "includes/action.php?page=access&action=remove";
var popupmessage = "Error";
$.post(url, { id: id },
function(data){
return true;
});
}
});
});
但是当我通过jQuery添加新行时,它在刷新页面之前不起作用
$("<a class=\"remove\" href=\"#\"></a>").insertAfter('#accesstable tr:last');
任何想法如何解决它?
编辑:工作代码
$('a.remove').live('click', function(){
var id = $(this).attr('id')
var user = $(this).attr('value')
$.ajax({
success : function(){
var url = "includes/action.php?page=access&action=remove";
var popupmessage = "Error";
$.post(url, { id: id },
function(data){
return true;
});
}
});
});
尝试:
$(document).on('click', 'a.remove', function(){
委托事件的优点是,它们可以处理来自稍后添加到文档的后代元素的事件。通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委派事件来避免频繁附加和删除事件处理程序的需要。
猜测(因为没有足够的代码显示确定),你的问题是你绑定了点击,然后添加了一个应该被该点击处理程序绑定的元素。它不起作用。如果与.click
绑定,它将绑定当时存在的所有匹配元素。它不会自动绑定创建的新元素。
要绑定尚未创建的元素,请在带有选择器的父元素上使用.on
。
.live不推荐使用:
$("a[class='remove']").live('click', function(){});