【问题标题】:Unbind event on click of a table row not working Jquery单击表格行时取消绑定事件不起作用Jquery
【发布时间】:2013-04-24 05:32:40
【问题描述】:

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

【问题讨论】:

  • 微调器没有change 事件。它只是一个特殊的方法,当你改变它的值时会调用它。所以没有办法“解绑”它
  • 是的,它有一个:api.jqueryui.com/spinner/#event-change
  • 抱歉,这是一个 jQuery UI 事件,不是真正的 event。就像我说的那样,你不能绑定到它或取消绑定它......你只需指定调用内部“更改”事件时会发生什么。
  • event 是“spinchange”
  • 哦,我明白了!谢谢!

标签: javascript jquery


【解决方案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);
});

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

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

【讨论】:

    猜你喜欢
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多