.click函数问我两次确认

时间:2018-06-15 14:46:21

标签: ajax click

我有这个问题,也许你们可以帮我修复它。

Botton删除:

<button type="button" class="del-trade">Delete</button>

Ajax代码:

$(function(){
  $("#modaledittrade").on("show.bs.modal", function (e) {
    $('.del-trade').click(function(){
      var id = $(e.relatedTarget).attr( "data-id" );
        if( confirm( "Are you sure?") )
        {
        $.post( "actions.php?a=del-trade", { "id" : id },function(d){
          if( d.type!="ok" )
          {
            alert( d.msg );
            return;
          }
          $( "tr#" + id ).remove();
          resetForms( e.currentTarget );
          $( "#modaledittrade").modal('hide');
        },"json");
      }
    });
  }); 
});

代码给我循环两次......我的意思是问我两次函数confirm()。 视频演示:http://sc.sny.pt/sJH6

2 个答案:

答案 0 :(得分:0)

根据我所看到的,我认为原因是因为你创建了多个onclick事件实例:

第一次删除(显示模态时)创建onclick事件和 第二次创建第二个事件。

这应该有效:

$(function(){
    /*$("#modaledittrade").on("show.bs.modal", function (e) {

    }); */


  $('.del-trade').click(function(){
    var id = $(e.relatedTarget).attr( "data-id" );
      if( confirm( "Are you sure?") )
      {
      $.post( "actions.php?a=del-trade", { "id" : id },function(d){
        if( d.type!="ok" )
        {
          alert( d.msg );
          return;
        }
        $( "tr#" + id ).remove();
        resetForms( e.currentTarget );
        $( "#modaledittrade").modal('hide');
      },"json");
    }
  });
  });

答案 1 :(得分:0)

您可以将click事件拉出来,使用on:

,这仍然可以按预期工作
$(document).on("click", '.del-trade', function(e){
    var id = $(e.relatedTarget).attr( "data-id" ); // can still get ID same way

    if( confirm( "Are you sure?") )
    {
    $.post( "actions.php?a=del-trade", { "id" : id },function(d){
      if( d.type!="ok" )
      {
        alert( d.msg );
        return;
      }
      $( "tr#" + id ).remove();
      resetForms( e.currentTarget );
      $( "#modaledittrade").modal('hide');
    },"json");
  }
});

编辑:或者,当隐藏模态时,请关闭删除点击操作:

$("#modaledittrade").on("hide.bs.modal", function (e) {
    $('.del-trade').off("click");
}); 

$("#modaledittrade").on("show.bs.modal", function (e) {
    $('.del-trade').on("click", function(e) { .. });
});