如何切换jQuery哈希URL

时间:2019-05-23 13:07:06

标签: jquery

这是漫长的一天,我怀疑这助长了这个看似简单的问题。

我有一个汉堡菜单,需要打开#url,它需要在以下菜单之间进行切换:

Open = #open
Close = #close

我的jquery代码如下:

        $('.menu').click(function () {
            $(this).attr("href","#close");
        });

我的html看起来像这样:

 <a href="#open" class="menu">
   <b></b>
   <b></b>
   <b></b>
   <span>Menu</span>
</a>

我可以很好地打开菜单,也可以将其关闭,但是,一旦关闭菜单,由于href仍显示为#close,因此无法再次打开菜单。因此,我想知道如何切换它,以便无论url还是href都相反?

我非常感谢您。

3 个答案:

答案 0 :(得分:0)

我通常使用<a href="#open">,但也使用window.location.hash。处理此问题的一种好方法是使用以下代码来执行操作:

$(window).on('hashchange', function() {
});

我将我的哈希字符串与HTTP GET字符串完全一样,手动解析配对,然后将其发送给AJAX调用。这是让AJAX播放直接链接和浏览器历史记录的好方法。

答案 1 :(得分:0)

仅在每次单击菜单并更改其值时检查href属性值是什么?

这应该有效:

$('.menu').click(function() {
    if($(this).attr("href") == "#open") {
        $(this).attr("href", "#close");
    } else {
        $(this).attr("href", "#open");
    }
});

答案 2 :(得分:0)

以下解决方案适用于您的情况。

    $('.menu').click(function(e) {
      var hash = (e.currentTarget.hash === "#close") ? '#open' : '#close'
      $(this).attr("href", hash);
    });