Jquery scroll для предотвращения очереди - PullRequest
1 голос
/ 29 августа 2011

Хорошо, простой вопрос для scrollTo.Я ищу способ предотвратить очереди анимации прокрутки.Я пытался работать в stop (), но, похоже, это не сработало ... какие-нибудь идеи?вот код ...

('# nav_hold li a'). click (function () {

$ currLoc = $ (this) .attr ('href');

$newLoc = $currLoc.replace('#!','');  

$ newLoc = "#" + $ newLoc;

$ (окно) .scrollTo ($ newLoc, 1000);
});

вот сайт FYI http://www.dudnyk.com/files/connector/

Ответы [ 5 ]

7 голосов
/ 03 января 2012

У меня была такая же проблема, но я нашел решение здесь http://usejquery.com/sites/contrast-rebellion

Просто используйте строку jQuery.scrollTo.window().queue([]).stop(); перед любым новым scrollTo.

1 голос
/ 29 августа 2011

.stop () Используется для удаления текущей запущенной анимации, а также для очистки в очереди .stop(true)

$('#about').click(function() {
    $(this).stop(true);
    $.scrollTo('#about', 1000); 
});

Из документации JQuery (ссылка выше):

Если для одного элемента вызывается более одного метода анимации, более поздние анимации помещаются в очередь эффектов для элемента. Эти анимации не начнутся, пока не завершится первая. когда .stop () вызывается, следующая анимация в очереди начинается немедленно. Если параметру clearQueue предоставляется значение true, то остальные анимации в очереди удаляются и никогда не запускаются.

1 голос
/ 29 августа 2011

Есть функция clearQueue () . Я думаю, что это должно помочь.

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

Когда вы используете $.scrollTo для любого элемента, он фактически прокручивает (с анимацией) документ, пока прокрутка не достигнет указанного элемента.Поэтому я считаю, что мы должны остановить анимацию на документе.Попробуйте это

$('#about').click(function() {
    $(window).stop();
    $.scrollTo('#about', 1000); 
});
0 голосов
/ 29 августа 2011
{ queue : false }

как опция scrollTo

но это по умолчанию. разве щелчок якоря не приведет вас куда-нибудь?

...