单击表行时解除绑定事件不起作用Jquery

时间:2013-04-23 21:15:35

标签: javascript jquery

我正在使用一个表和一个微调器,当一行表被点击时,我想在旋转器的值中添加一个并执行函数x,另一方面,微调器有事件更改,当它改变时,我想执行函数y。我有这个:

$(spinner).spinner({ 
      change: function( event, ui ) {
          alert("y");
      }
}).val(0);  

$('td#row').dblclick(function(event){
        $(spinner).spinner("value");
        $(spinner).spinner("value", value + 1);
        alert("x");
    }

问题是当我双击表时,两个函数都被调用(函数x和y),如何取消微调器的更改事件?我试过这个:

$(spinner).spinner("value", value + 1).unbind("change");

另外,我尝试了undelegate() event.stopPropagation() event.stopImmediatePropagation()方法,但没有任何作用,任何想法?

1 个答案:

答案 0 :(得分:1)

event名称是“spinchange”,因此您可以绑定或取消绑定该事件,而不是指定change选项。试试这个:

function spinChange(event, ui) {
    console.log("AFAF");
}

$("#spinner").spinner().on("spinchange", spinChange);

$("#btn1").on("click", function () {
    var $spinner = $("#spinner"),
        prevValue = $spinner.spinner("value");

    $spinner.off("spinchange", spinChange);
    $spinner.spinner("value", prevValue+1);
    $spinner.on("spinchange", spinChange);
});

DEMO: http://jsfiddle.net/5cL8G/2/

请注意,单击按钮不会在控制台中记录任何内容,而是手动更改值(和非聚焦)。