Не можете перепривязать событие прокрутки?

Я хочу перепривязать событие прокрутки окна в вызове 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'); кажется не работает.

1 ответ

Когда ты .unbind ссылка на связанное событие не сохраняется нигде и ничего. $(window).bind('scroll') на самом деле ничего не делает.

Во-первых, если вы используете 1.7 ты должен использовать .on а также .off вместо. Не так уж и важно.

Есть несколько способов сделать это, но самый простой - просто определить функцию отдельно и использовать ее имя для привязки / отмены привязки. Вы даже можете прикрепить его к окну (хотя я думаю, что просто с помощью function Ключевое слово делает это. Тем не мение..)

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

Вы можете использовать эту вторую строку для замены $(window).bind('scroll') выше. Остерегайтесь рекурсии.

Другие вопросы по тегам