1

events-map プロパティを使用してイベントを無効にしようとしていますが、イベントjQuery.off()を無効にしていないようです。

jQuery ドキュメントによるとoff()、events-map のキーを使用し、値を無視する必要があります。

例を次に示します: http://jsfiddle.net/tNBMM/

チェックボックスをオンにすると、単純なホバー効果が発生します。チェックを外すと関数が呼び出さoff()れ、(私が見ているように) イベントを無効にする必要がありますが、そうではありません。

ここで何が間違っていますか?

4

1 に答える 1

4

off()on()無効にするには、で使用されたものとまったく同じ関数参照が必要です。現在のバージョンでは、技術的には、チェックボックスがクリックされるたびに新しいハンドラーmouseenterを作成しています。とmouseleaveに同じ関数参照を使用する更新バージョンを次に示します。期待どおりに動作します: http://jsfiddle.net/tNBMM/2/on()off()


編集:将来の訪問者のために、ここに作業コードがあります:

var enter = function() { $('#thing').css('background-color', 'red'); },
    leave = function() { $('#thing').css('background-color', 'white'); };
$('#show').click( function() {
    var show = $(this).is(':checked');

    $('#thing')[show ? 'on' : 'off']({
        mouseenter: enter,
        mouseleave: leave
    });
});​
于 2012-05-16T12:51:14.710 に答える