0

我正在使用表格和微调器,当表格的一行被双击时,我想将一个添加到微调器的值并执行函数 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()方法,但没有任何效果,有什么想法吗?

4

1 回答 1

1

名称是“ eventspinchange”,因此您可以绑定或取消绑定到该事件,而不是指定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);
});

演示:http: //jsfiddle.net/5cL8G/2/

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

于 2013-04-23T21:32:40.167 回答