javascript - jQuery hashchange 事件立即无速度执行动画

标签 javascript jquery jquery-animate hashchange

我在使用 jQuery 和将动画包装在 hashchange 事件中时遇到问题。当事件被触发时,动画立即发生。我需要它是光滑的。

    jQuery( document ).ready(function() {
        jQuery(window).on('hashchange', function() {
                jQuery('body').animate({ scrollTop: jQuery(window.location.hash).offset().top}, 'slow');
        });
    });

如果我不将动画包装在 hashchange 事件中,一切都很好...

最佳答案

如果您将哈希更改为存在的 anchor ,它将自动跳转到该 anchor ,而无需等待动画。您可以看到,只需删除动画就会发生这种情况,因为它仍然会跳跃。可以通过在 URL 中使用实际上不包含具有相应 id 的元素的哈希来解决此问题,并更改选择器 scrollTop 来适应此问题。

例如,您可以将“about”部分的 ID 更改为 about-section 并继续使用 #about 作为哈希。然后,您可以使用 scrollTop: jQuery(window.location.hash + "-section"),而不是 scrollTop: jQuery(window.location.hash).offset().top。 offset().top 以避免自动跳转到该元素。

关于javascript - jQuery hashchange 事件立即无速度执行动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32278063/

相关文章:

javascript - 在js中创建if/then语句时,如何测试数组中的数据?

javascript - 如何在基于 widgetVar 的 Primefaces 组件中查找和/或覆盖 JavaScript?

jQuery 显示 5 秒然后隐藏

javascript - 如何使用 JQuery 通过单击事件获取 <div> <p> 下拉列表中的选定值?

jquery - 有没有办法使用 jQuery animate 函数对固定位置图像进行动画处理?

jquery - 1.7.2 中的顺序 jQuery 动画

javascript - FFMPEG,使用图像选择区域插件模糊视频区域

javascript - 如何使用 .css() 应用 !important?

javascript - jQuery、fadeToggle 和列表项

javascript - 防止默认();对 drop 事件没有任何影响