我正在使用jquery使用ajax,我正在使用以下代码片段删除一行:
$('#example a.delete'). live('click', function (e) {
e.preventDefault();
if (confirm("Are you sure you want to delete this row?"))
{
alert("Hello World!")
}
});
当我点击网格视图显示按钮时,由于ajax,网格视图不会刷新页面。如果我多次单击网格视图显示按钮,则会相应地刷新网格视图区域。但确认框显示不止一次,这等于我的没有。单击网格视图显示按钮时单击单行删除按钮。
如何避免这种情况!
被修改
HTML CODE:
<td><a class="delete" href="#" style="margin-left: 10px"><img src="images/delete-icon.png" width="16px" height="16px" /></a></td>
被修改
完整的代码段:
$('#example a.delete'). live('click', function (e) {
e.preventDefault();
if (confirm("Are you sure you want to delete this row?"))
{
$getCode = $(this).parent().parent().attr('id');
var oTable = $('#example').dataTable();
var index =oTable.fnGetPosition( document.getElementById($getCode) );
$.post("DeleteDepartment", {
depID:$getCode
}, function(data) {
if(data.result >0){
var oTable = $('#example').dataTable();
oTable.fnDeleteRow( index );
}else{
alert("Operation Fail");
}
});
}
});
答案 0 :(得分:5)
$('#example a.delete').unbind('click').bind('click', function (e) {
e.preventDefault();
if (confirm("Are you sure you want to delete this row?"))
{
alert("Hello World!")
}
});
答案 1 :(得分:1)
您似乎将多个事件附加到按钮。你确定你只打电话给live()
ONCE吗?如果你多次调用它,你会得到多个处理程序。
(当然,这就是为什么我更喜欢亲自使用.onclick = function() {...}
)
答案 2 :(得分:0)
看起来编写的代码是为每次点击执行一次确认。 如果您只想让代码记住您已经确认,则只需确认一次。
在服务器调用您的成功回调函数之前,不会删除该行。在此期间,您可以继续单击该行并触发点击事件。
您可以在用户确认时在行上设置变量或属性,然后在每次单击时检查此变量。仅在未设置变量时显示确认消息。
或者您可以更改单击元素的状态,更改其图像,更改样式,设置属性。您可以通知您的代码已被单击,并向用户表明该行已被标记为删除。
或者您可以尝试使用jquery的.one()方法来附加事件。