удалить прослушиватель событий ajax - PullRequest
0 голосов
/ 29 августа 2018

С помощью jQuery я создаю вызов ajax с методом GET. Этот запрос срабатывает, если пользователь прокручивает вниз. Если запущен вызов ajax, я хочу удалить слушателя прокрутки. Если вызов ajax успешен, добавьте функцию прокрутки. Я пытался это с unbind, но это не работает.

Кто-нибудь может мне помочь?

window.onscroll = function(ev) {
        if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
            $(window).unbind('scroll');
            //ajax call
            $.ajax({
                type: "GET",
                url: "result.php",
                data: {
                    'offset': flag,
                    'limit':12
            },
            success: function(data){
                $('.gallery').append(data);
                flag += 12;
            }
            });
        }
    };

1 Ответ

0 голосов
/ 29 августа 2018

Назовите функцию, выполняемую в eventListener, и используйте .on() / .off() для удаления слушателей:

$(window).on("scroll", windowScroll);


function windowScroll(ev) {
  if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
    $(window).off('scroll', windowScroll); // remove the listener on scroll
    //ajax call
    $.ajax({
      type: "GET",
      url: "result.php",
      data: {
        'offset': flag,
        'limit': 12
      },
      success: function(data) {
        $('.gallery').append(data);
        flag += 12;
        $(window).on("scroll", windowScroll); // re-attach it when the request is finished
      }
    });
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...