Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery函数没有';无法更改url_Javascript_Jquery_Hash - Fatal编程技术网

Javascript jquery函数没有';无法更改url

Javascript jquery函数没有';无法更改url,javascript,jquery,hash,Javascript,Jquery,Hash,我正在研究一种我称之为标签链接的东西。 有了它,我试图在一个一页的网站中实现深度链接,其中所有内容都被隐藏,所有内容都与javascript、jquery和php(Wordpress)挂在一起 使用window.location.hash我可以读取部分url,使用switch语句,我可以启动某些函数来加载以前隐藏的右侧div $(document).ready(function() { var hash = window.location.hash; switch(hash)

我正在研究一种我称之为标签链接的东西。 有了它,我试图在一个一页的网站中实现深度链接,其中所有内容都被隐藏,所有内容都与javascript、jquery和php(Wordpress)挂在一起

使用
window.location.hash
我可以读取部分url,使用switch语句,我可以启动某些函数来加载以前隐藏的右侧
div

$(document).ready(function() {
    var hash = window.location.hash;

    switch(hash) {
        case "#faq":
            showOverlay('faq', 'menu-up');
            break;
        case "#contact":
            showOverlay('contact-submenu', 'menu-up');
            break;
        case "#reserveren":
            showOverlay('reserveren-submenu', 'menu-up');
            break;
        case "#reserverenjanenl":
            Reserveren('NL');
            break;
        case "#reserverenjaneen":
            Reserveren('EN');
            break;
        case "#reserverenurbnl":
            ReserverenURB('NL')
            break;
        case "#reserverenurben":
            ReserverenURB('EN');
            break;
        case "#reserveringsvraag":
            showOverlay('reserveringsvraag', 'menu-up');
            break;
        case "#groepsreservering":
            showOverlay('groepsreservering', 'menu-up');
            break;
    }
});
如您所见,我正在使用
文档
就绪
函数。如果您使用电子邮件中的标签链接,甚至从网站其他部分的链接导航到网站的某个部分,则此功能正常。
问题是,如果你已经在网站上并且你改变了标签链接,那么它就不起作用了。在chrome中,一次页面重新加载并运行功能,另一次页面不运行功能。
在Firefox和Safari中,它根本不这样做

它尝试了
$(window.load(function(){})
$(窗口).on('hashchange',函数(e){})(),但无效

您自己在这里试试:

然后尝试将url中的哈希更改为#reserveren


有人找到解决方案了吗?

请将代码放入函数中,并在所有需要的事件中调用它(在本例中,文档准备就绪并更改):


请将您的代码放入函数中,并在您需要的所有事件中调用它(在本例中为document ready and hashchange):


我认为你是你自己成功的牺牲品。锚(散列值)是专门设计用来工作的,不需要重新加载整个页面,只需跳到锚所在的位置。因此,如果更改URL中的has值,它将不会重新加载页面,只需跳转到该锚点即可

但是,在您的情况下,因为您没有将它们用作锚定,而是作为switch语句内容,所以更改锚定时,它不会起任何作用。JQuery函数不会再次运行,因为页面不会重新加载-$(document)。不重新加载-不重新运行函数


这有意义吗?

我认为你是自己在这里成功的牺牲品。锚(散列值)是专门设计用来工作的,不需要重新加载整个页面,只需跳到锚所在的位置。因此,如果更改URL中的has值,它将不会重新加载页面,只需跳转到该锚点即可

但是,在您的情况下,因为您没有将它们用作锚定,而是作为switch语句内容,所以更改锚定时,它不会起任何作用。JQuery函数不会再次运行,因为页面不会重新加载-$(document)。不重新加载-不重新运行函数


这有意义吗?

您可以在所有链接上放置一个单击侦听器,然后检查哈希。我在www.thejaneantwerp.com上看到了您的代码,它与我的答案一致。祝贺:)请把它标为正确答案。谢谢你,你可以在所有链接上放置一个点击侦听器,然后检查哈希。我在www.thejaneantwerp.com上看到了你的代码,它与我的答案一致。祝贺:)请把它标为正确答案。谢谢你是有道理的。谢谢你的解释。有道理是的。谢谢你的解释。这似乎是有效的,虽然它没有隐藏旧的div,但我认为我可以修复它。隐藏旧div是另一项任务,非常简单,但您在问题中提到的问题已经解决,我在您的网站上看到:)很高兴为您提供帮助。再见!这似乎是可行的,虽然它没有隐藏旧的div,但我认为我可以修复它。隐藏旧div是另一项任务,非常简单,但您在问题中提到的问题已经解决,我在您的网站上看到:)很高兴为您提供帮助。再见!
function switchHash() {
    var hash = window.location.hash;

    switch(hash) {
        case "#faq":
            showOverlay('faq', 'menu-up');
            break;
        case "#contact":
            showOverlay('contact-submenu', 'menu-up');
            break;
        case "#reserveren":
            showOverlay('reserveren-submenu', 'menu-up');
            break;
        case "#reserverenjanenl":
            Reserveren('NL');
            break;
        case "#reserverenjaneen":
            Reserveren('EN');
            break;
        case "#reserverenurbnl":
            ReserverenURB('NL')
            break;
        case "#reserverenurben":
            ReserverenURB('EN');
            break;
        case "#reserveringsvraag":
            showOverlay('reserveringsvraag', 'menu-up');
            break;
        case "#groepsreservering":
            showOverlay('groepsreservering', 'menu-up');
            break;
    }
  }

$(document).ready(switchHash);
$(window).on('hashchange', switchHash);