2017-02-02 8 views
0

Этот сценарий работает правильно, но мое предупреждение появляется в два раза также вызов моей функции «check_page_end», которые показывают мои посты два разапроверка Javascript, если DIV достигается свитка

<script> 

     jQuery(document).ready(function(){ 

     $(window).bind('scroll', function() { 
      if($(window).scrollTop() >= $('#posts').offset().top + $('#posts').outerHeight() 
       - window.innerHeight) { 
       alert('end reached'); 
       check_page_end($('#offset').val()); 
      } 
     }); 



     }); 
    </script> 
+0

Так что твой вопрос? Оповещения с событиями прокрутки всегда являются плохой идеей, потому что событие срабатывает несколько раз в зависимости от количества/скорости прокрутки. – Utkanos

+0

Мой вопрос в том, как пусть он будет вызываться только один раз, потому что дублирует мои сообщения два раза – 1616

ответ

0

Один из способов избежать дублирования прокрутки event firings состоит в том, чтобы отложить обратный вызов на несколько секунд после возникновения события, но сначала отменить любой предыдущий вызов.

var to; 
$(window).on('scroll', function() { 
    clearTimeout(to); 
    to = setTimeout(function() { alert('finished scroll'); }, 500); 
}); 

Обратный звонок срабатывает через 0,5 секунды после срабатывания события прокрутки. Если другое событие прокрутки срабатывает (например, прокрутка продолжается) до этого, то вызываемый обратный вызов отменяется.

0

Я решил эту проблему, добавив новую логическую переменную она изменяет его состояние только тогда, когда я называю моя функция, здесь она exectued только один раз

<script> 
     window.load_more_content = true; 
     jQuery(document).ready(function(){ 
     $(window).scroll(function(){ 
     if(window.load_more_content && $(window).scrollTop() >= ($('#posts').height())){ 
      window.load_more_content = false; 
      console.log('posts end loading ohers .. '+$('#offset').val()); 
      get_more_posts($('#offset').val()); 
     } 
     }); 
     }); 
</script> 
Смежные вопросы