2015-06-17 2 views
1

На моем сайте есть страницы, которые динамически загружают контент без необходимости менять страницы. У меня есть следующий jquery-плагин, созданный в моем файле javascript, который должен делать определенные вещи, когда страница прокручивается вниз.jQuery Прокрутка события прокрутки без фактической прокрутки

$.fn.scrollEvent= function() { 
    $(document).on("scroll", function() { 
     console.log("Scroll"); 
     if($(window).scrollTop() + $(window).height() == $(document).height()) { 
      // do stuff 
     } 
    }); 
}; 

Так что, когда пункт меню щелкнуло, я загрузить новое содержание страницы, и я называю JQuery плагина, поэтому он может быть использован на новой странице.

$(document).ready(function() { 
    $(document).on("click", ".menu-item", function() { 
     $.fn.scrollEvent(); 
     // do other page stuff 
    }); 
}); 

Однако то, что я заметил, что когда я называю плагин, консоль регистрации «Свиток», прежде чем я сделать что-нибудь на этой странице. Таким образом, событие прокрутки вызывается один или два раза без меня вообще прокрутки.

Почему это происходит? Есть лучший способ сделать это?

ответ

1

Вы должны использовать следующий шаблон:

$.fn.scrollEvent = function() { 
    return this.on("scroll", function() { 
     console.log("Scroll"); 
     if ($(window).scrollTop() + $(window).height() == $(document).height()) { 
      // do stuff 
     } 
    }); 
}; 

$(window).scrollEvent(); //bind event to windwo or any element 
+0

Спасибо, что помогли – Josh

+0

Caching $ (окна) и $ (документ) за пределами события прокрутки и использование === вместо == поможет прокрутки производительности здесь , –

Смежные вопросы