【问题标题】:jQuery window.location.hash troublesjQuery window.location.hash 的麻烦
【发布时间】:2016-01-22 07:09:20
【问题描述】:

我有一个单页滚动类型的网站,它使用滚动捕捉插件从一个部分捕捉到下一个部分。当滚动到每个部分时,哈希值会发生变化(#1、#2、#3 等)。

我想使用哈希变化来触发动画。所以在测试我写的函数时,只有在页面刷新时才有效。我不能发布网站本身,因为它是本地的,但这里是代码。

JS:

$(document).ready(function () {

//Trigger an animation based on hash location/URL
function hashChange() {
    alert("hashChange works!");
};
var hash = window.location.hash;
if (hash === '#3') {
    hashChange();
};

});

任何帮助将不胜感激。


=======


更新:

这是我更新的代码。但现在它会在每次哈希更改时运行(#1、#2、#3、#4)。

function hashChange() {
    alert("hashChange works!");
};
window.addEventListener('hashchange', hashChange);
var hash = location.hash;
if (hash === '#3') {
    hashChange();
};

有人知道如何指定吗?它也是一个单页滚动,在您滚动时会捕捉到部分。当您从部分滚动时,哈希值会发生变化,但不会触发我写的警报。

救命!

【问题讨论】:

    标签: javascript jquery hash location


    【解决方案1】:

    您可以为hashchange 事件注册一个事件监听器。

    在你的情况下:

    function hashChange() {
      alert('hashChange works!');
    }
    window.addEventListener('hashchange', hashChange);
    

    【讨论】:

    • 这绝对有效,这是一个演示:jsfiddle.net/azefpgz6。检查您的控制台,以防您的代码中的其他地方出现错误。
    • 奇怪,我在控制台中没有看到任何问题。当我使用导航时,每个部分都会触发该功能,但当通过滚动激活哈希更改时不会触发...奇怪
    • 我认为问题可能是如果以编程方式更改哈希,事件不会被触发......但不是:jsfiddle.net/qe3hoLuq/2
    猜你喜欢
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2012-05-03
    • 2012-11-10
    • 2011-08-18
    • 2013-07-06
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多