Jquery .off然后将其恢复为on

当我想从我的提交按钮中删除点击处理程序时,我正在使用

$(#submitBtn).off();//works fine 

但是,当我想恢复到以前的阶段时, .on()不起作用。

  if(flag){ $(#submitBtn).off();//works fine $.ajax({ type: 'POST', url: 'someservice.php', data: {email:email,name:name,text:text}, success: function (data) { $('#submitBtn').on();//does not work });//ajax end } 

.off()

不带参数调用.off()会删除附加到元素的所有处理程序。 通过提供事件名称,命名空间,选择器或处理函数名称的组合,可以在元素上删除特定事件处理程序。

。上()

将一个或多个事件的事件处理函数附加到所选元素。 它必须有参数 –

 .on( events [, selector ] [, data ], handler ) 

我建议您使用按钮禁用逻辑而不是绑定和解除绑定: .prop('disabled')

 $('#submitBtn').prop('disabled',true) //disable $('#submitBtn').prop('disabled',false) //enable 

注意 :ID选择器写为$('#submitBtn')而不是$(#submitBtn)

您正在删除事件,因此当您打电话on()您需要指定哪个事件,因为它不会知道它。

$('#submitBtn').on('click', someFn);

您还可以禁用该按钮以防止多次提交,然后删除ajax成功处理程序中的disabled属性