由于某种原因,jQuery.off('click')似乎在这里不起作用。在模型中单击"is"按钮时,会弹出另一个模型。我究竟做错了什么?

代码:

$(function(){

  //If there are warnings on the page bind alert
  if ($('.renewal-warning').length > 0){

    (function (){

      $('#signRentalContainer').on('click', '.renewal-warning', function(e){

        var buttonHandle = this;

        //Prevent submission
        e.preventDefault();

        //Show warning model
        $.modal({
          content: $('#renewalWarning').html(),
          title: "Order Renewal Warning",
          buttons: {
            'Yes': function(win) { $(buttonHandle).off('click').click(); },
            'No': function(win) { win.closeModal(); }
          },
          maxWidth: 250,
          closeButton: false
        });
      });
    })();
  }
});

最佳答案

可以肯定的是,您将需要为其提供相同的元素以及相同的选择器。

$('#signRentalContainer').off('click', '.renewal-warning');

.on()处理程序中,this是单击的'.renewal-warning'元素,而不是#signRentalContainer元素。

如果这些'.renewal-warning'元素中有多个,并且您一次只想禁用一个,则最简单的方法是更改​​其类,使其不再与选择器匹配。
$(this).removeClass('renewal-warning')
       .addClass('renewal-warning-disabled');

关于javascript - jQuery.off()没有删除绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8868293/

10-15 08:32