0

私はテーブルとスピナーで作業しています。テーブルの行が 2 回クリックされたときに、スピナーの値に 1 を追加して関数 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

名前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/

ボタンをクリックしてもコンソールに何も記録されませんが、値を手動で変更 (およびフォーカスを外す) すると記録されることに注意してください。

于 2013-04-23T21:32:40.167 に答える