при обновлении location.hash в Chrome анимация jQuery «зависает» на секунду - PullRequest
1 голос
/ 08 апреля 2010

Я пытаюсь создать что-то вроде "виртуальной галереи". Я использую Coda Slider 2.0 и jQuery v1.4.2

Он прекрасно работает в IE, FF и Safari, но Chrome, кажется, перезагружается / зависает при установке location.hash. Это заставляет анимацию jQuery зависать на секунду: S

Пример: http://hardyernst.dk/gallery.html попробуйте нажать на навигационные ссылки над изображениями.

Код jQuery, который выполняется при нажатии на навигационную ссылку:

        $('#coda-nav-' + sliderCount + ' a').each(function(z) {
        // What happens when a nav link is clicked
        $(this).bind("click", function() {
            offset = -(panelWidth*z);
            navClicks++;
            $(this).addClass('current').parents('ul').find('a').not($(this)).removeClass('current');
            alterPanelHeight(z);
            currentPanel = z + 1;
            $('.panel-container', slider).stop().animate({ left: offset }, settings.slideEaseDuration, settings.slideEaseFunction, function(){
            if (!settings.crossLinking) { return false; } // Don't change the URL hash unless cross-linking is specified
            });
        });
    });

если я добавлю

return false;

в конце функции. Анимация будет плавно скользить :) ... НО , как вы могли догадаться, значение location.hash остается неизменным :(

Я пытался установить location.hash ранее в функции, увы, это не изменило поведение в Chrome

Буду безмерно благодарен за любую помощь:)

С уважением Убунут

редактирование: Так что теперь я переместил location.hash в функцию обратного вызова анимации, это стало намного более плавным :), но если вы быстро нажмете две навигационные ссылки друг за другом, анимация будет зависать / зависать на мгновение (как и раньше). Я мог бы добавить jQuery .delay (), но я бы не стал так делать. Есть предложения?

...