2012-05-12 27 views
0

我使用AJAX使用jquery,我使用下面的代码片段删除行:确认框超过一次出现

$('#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代码:

<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

你用的是什么jQuery版本? –

+0

jQuery v1.7.1 @ltiong_sh –

回答

1

你似乎是连接多个事件到按钮。你确定你只打一次电话live(),一次?如果你多次调用它,你会得到多个处理程序。

(当然,这就是为什么我宁愿只使用.onclick = function() {...}个人)

+0

是的亲爱的,我打电话给它@Kolink –

0

它看起来像代码写入到每次点击做一次确认。 如果您只希望它确认一次,则必须使代码记住您已经确认。

该行在服务器调用成功回调函数之前不会被删除。在此期间,您可以继续点击该行并触发点击事件。

您可以在用户确认时在行上设置变量或属性,然后每次点击时都检查此变量。如果变量没有设置,只显示确认信息。

或者您可以更改单击元素的状态,更改其图像,更改样式,设置属性。您都可以通知您的代码已被点击并向用户指出该行已被标记为删除。

或者你可以尝试jquery的.one()方法来附加事件。

+0

alert(“Hello World!”)只是示例,在这里我删除当前行。但它确认不止一次@joshp –

+0

我明白了。这从代码中看不出来。如果你没有找到解决方案,最好做一个小例子,实际显示问题并把它放在jsfiddle中。 – joshp

+0

我已经粘贴了完整的代码@joshp –

4
$('#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!") 
    } 

});

+0

你的代码不能用于添加动态新行,直到页面刷新@pankil thakkar –