2013-09-06 2 views
0

Я заметил, что если я несколько раз нажимаю кнопку «Вверх», а затем вы пытаетесь прокрутить вниз, это заставляет окно продолжать прокрутку наверху. Любая идея, как остановить это?нажмите кнопку «Вверх» (scrollTop) несколько раз.

мой код:

<a href="#" class="scrollup">Scroll</a> 

<script type="text/javascript"> 
    $(document).ready(function(){ 

     $(window).scroll(function(){ 
    $("html, body").stop(); 
      if ($(this).scrollTop() > 100) { 
       $('.scrollup').fadeIn(); 
      } else { 
       $('.scrollup').fadeOut(); 
      } 
     }); 
     $.clicked = false; 
     if ($.clicked == false){ 
     $('.scrollup').click(function(){ 
     $.clicked = true; 
      $("html, body").stop().animate({ scrollTop: 0 }, 600); 
      return false; 
     }); 
     } 
    }); 
</script> 

ответ

1

Как вы сказали, нажмите несколько раз, так что событие будет срабатывать Mulitple раз, так что вам нужно, чтобы остановить функцию анимации,

Так редактировать код, как показано ниже,

$("html, body").stop().animate(
--------------^^^^^^^^---- 

ИЛИ редактировать код для свитка

$(window).scroll(function(){ 
    $("html, body").stop(); 
+0

Здравствуйте, @DipeshParmar благодарит за помощь! первый код выполняет эту работу. но если я вставлю второй код, он заставит прокрутку двигаться только на один пиксель, когда я нажимаю на кнопку. но если вы используете код без второго кода, который вы делите, он все еще делает какую-то проблему ... *** вы можете увидеть мой исходный код, у меня есть редактирование, как вы предложили *** –

+0

@ need-help sorry for my bad i place 'также 'вместо' OR' вы можете сделать это в любом случае. –

0
$(function() { 
     $('button').hide(); 
     $(window).scroll(function() { 
      if ($(this).scrollTop() >= 50) { // If page is scrolled more than 50px 
       $('#return-to-top').fadeIn(200); // Fade in the arrow 
      } else { 
       $('#return-to-top').fadeOut(200); // Else fade out the arrow 
      } 
     }); 
     $('#return-to-top').click(function() { // When arrow is clicked 
      $('body,html').animate({ 
       scrollTop: 0 // Scroll to top of body 
      }, 500); 
     }); 
    }); 

Это должно сработать.

0

У меня была аналогичная проблема.

Я просто решил его с простой проверкой:

$('.scrollup').click(function(){ 
    if ($(document).scrollTop() != 0) { 
     $("html, body").animate({ scrollTop: 0 }, 600); 
    } 
    return false; 
}); 

Проблема, как уже отмечалось, является щелчок событие стрельбы несколько раз. Поскольку обработка события сама по себе не работала для меня, я просто попытался проверить, действительно ли текущее значение/позиция прокрутки находится там, где я хочу, и т. Д.: Странное поведение исчезло! :)

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