2

ajax呼び出しでウィンドウスクロールイベントを再バインドしたい

$(window).scroll(function(){
   column_height = $("#first_column").height();
   screenTop = $(window).scrollTop();
   window_height = $(window).height();

if((screenTop+window_height)>=column_height){

    $(window).unbind('scroll');


      $.ajax({
            url: "/service/article_json.php",
            type: 'GET',
            async: false,
            cache: false,
            timeout: 30000,
            error: function(){
                return true;
            },
            success: function(data){ 
                $.each($.parseJSON(data), function(key,item) {

                  //Add content to #first_column

                  $(window).bind('scroll');

                });
            }
        });
  }
});

動作してい$(window).bind('scroll');ないようです。

4

1 に答える 1

2

バインドされたイベントへの参照がどこ.unbindにも保存されていない場合。 $(window).bind('scroll')実際には何もしません。

まず、 and を使用している場合は、代わりにandを使用1.7する必要があります。大したことではありません。.on.off

これを行うにはいくつかの方法がありますが、最も簡単な方法は、関数を個別に定義し、その名前を使用してバインド/バインド解除することです。ウィンドウに取り付けることもできます(ただし、functionキーワードを使用するだけでそれができると思います.とにかく..)

$(window).data('scrollEvent', function() { /* your func here */ });
$(window).on('scroll', $(window).data('scrollEvent'));

その 2 行目を使用して上記を置き換えることができます$(window).bind('scroll')。再帰に注意してください。

于 2012-06-20T14:47:26.627 に答える