2

イベントリスナーをウィンドウサイズ変更にバインド/アンバインドしたいのですが、.on()/。off()関数を使用しています。.off()は.on()と同じ関数を渡す必要があるため、両方の場所で渡される別の関数を作成しました。

コードは次のとおりです(機能していません):

var i = 0;
function onResizeListener(){
    $('#debug').html(i);
    i++;
}
$(document).ready(function() {
    $(window).on('resize',onResizeListener());
});

例: http: //jsfiddle.net/eRupC/2/

これは機能しています:http://jsfiddle.net/eRupC/1/onResizeListener()無名関数でラップすると。

例での望ましい結果:ウィンドウのサイズを変更すると、番号が変更されます。

前もって感謝します。

4

3 に答える 3

2

に何かを渡す必要がある場合は、これを試してくださいonResizeListener。そうでない場合は、他の回答が示すように、onResizeListenerから括弧を削除します。ドキュメントをバインドする

$(document).ready(function() {
  var x = 2;
  var y = 4;
  $(window).bind('resize', function() {
    onResizeListener(x, y);
  });
});

これも機能します:

$(document).ready(function() {
  $(window).on('resize', function() {
    onResizeListener();
  });
});

サイズ変更イベントから関数呼び出しのバインドを解除し、それでも使用できる関数にパラメーターを渡すには、次のようにします。

$(document).ready(function() {
    //bind
    $(window).bind('resize', { foo: 'bar' },onResizeListener);

    //unbind, wrap in event you wish to use to unbind it
    $(window).unbind('click', onResizeListener);
});
于 2012-10-10T18:15:04.203 に答える
0

イベントハンドラコードから角かっこを削除する必要があります...

var i = 0;
function onResizeListener(){
    $('#debug').html(i);
    i++;
}
$(document).ready(function() {
    $(window).on('resize',onResizeListener);
});
于 2012-10-10T18:15:23.097 に答える
0

この行を置き換えます

  $(window).on('resize',onResizeListener());

これとともに

  $(window).on('resize',onResizeListener);

http://jsfiddle.net/pc5uC/

于 2012-10-10T18:21:27.347 に答える