如何在jquery上为多个按钮调用一次事件?

时间:2018-03-28 13:37:42

标签: jquery events button

我动态显示多个按钮,当我点击一个按钮时,我只想做一次事件,所以当事件完成后如果我点击任何按钮我什么都不做。

这是我的代码。当我尝试它时,它适用于每个按钮,所以如果我有3个按钮,我可以做3个事件,我只想要1个:

$('.btnSupp').one("click",  function(){
    if ($('.btnSupp').is("btn-danger")) {
    } else {
        var r = $('<a href="#">Enregistrer</a>');
        $("body").append(r);
    }
});

2 个答案:

答案 0 :(得分:1)

尝试off

我还修复了一个类选择器并删除了不必要的if并使其指向单击的按钮

如果委派:

$(document).on("click", '.btnSupp', function(){
  if (!$(this).is(".btn-danger")) {
    var r = $('<a href="#">Enregistrer</a>');
    $("body").append(r);
  }
  $(document).off("click", '.btnSupp')
});

如果不是

$('.btnSupp').on("click", function(){
  if (!$(this).is(".btn-danger")) {
    var r = $('<a href="#">Enregistrer</a>');
    $("body").append(r);
  }
  $('.btnSupp').off("click")
});

如果您想要非常具体,请使用Kaddath建议的命名函数,并在文档链接中显示:

function enri(){
  if (!$(this).is(".btn-danger")) {
    var r = $('<a href="#">Enregistrer</a>');
    $("body").append(r);
  }
  $(document).off("click", '.btnSupp', enri);
}

$(document).on("click", '.btnSupp', enri);

答案 1 :(得分:0)

您可以使用off取消关联点击事件。 .off()方法会删除附加了.on()的事件处理程序。

更改您的代码
$('.btnSupp').on("click",  function(){
    if ($('.btnSupp').is("btn-danger")) {
    } else {
        var r = $('<a href="#">Enregistrer</a>');
        $("body").append(r);
    }
});

$('.btnSupp').on("click", function1);

   function1(){
      if ($('.btnSupp').is("btn-danger")) {

  } else {
      var r = $('<a href="#">Enregistrer</a>');
      $("body").append(r);
  }
  //stop listening to function1 but will listen for other function 
  $('.btnSupp').off("click", function1);
}