Jquery .off然后将其恢复为on

时间:2014-07-01 05:10:14

标签: javascript jquery event-handling

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

$(#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
            }

2 个答案:

答案 0 :(得分:1)

<强> .off()

  

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

<强> .on()

  

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

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

我建议您使用按钮禁用逻辑:.prop('disabled')

,而不是绑定和解除绑定
$('#submitBtn').prop('disabled',true)         //disable
$('#submitBtn').prop('disabled',false)        //enable

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

答案 1 :(得分:0)

您正在删除该活动,因此当您致电on()时,您需要指定哪个活动,因为它不知道该活动。

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

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