我正在使用一个表和一个微调器,当一行表被点击时,我想在旋转器的值中添加一个并执行函数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()
方法,但没有任何作用,任何想法?
答案 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/
请注意,单击按钮不会在控制台中记录任何内容,而是手动更改值(和非聚焦)。