html锚点只能工作一次

时间:2011-07-09 12:36:38

标签: html anchor

我很惭愧地说我有锚问题。

所以我有这段代码:

<a name="map"></a>

$("div.store_list").click(function() {          
    //do some stuff         
    location.href = location.href + '#map'
});

第一次点击时,它可以正常工作。并且URL更改为:

http://mydomain.local/stores#map

再次点击URL更改为以下内容,它不起作用:

http://mydomain.local/stores#map#map

有什么建议吗?感谢

6 个答案:

答案 0 :(得分:4)

请尝试location.hash,例如

location.hash='#map'

答案 1 :(得分:2)

问题已使用:document.location = "#map";

解决

答案 2 :(得分:2)

如果您滚动并需要再次跳转,这对我有用:

onclick="location.hash=''; location.hash='#map';"

答案 3 :(得分:0)

您可以检查以确保该网址尚未包含您要追加的值:

$("div.store_list").click(function() {          
    //do some stuff
    if (location.href.indexOf('#map') == -1) {         
        location.href += '#map';
    }
});

答案 4 :(得分:0)

接受的解决方案对我来说并不合适。通过将锚值设置为&#34;#&#34;我设法让它在Chrome中工作。首先,然后将其设置到我想要的位置。

document.location.href = "#";
document.location.href = "#myAnchor";

一旦我这样做,每当我点击其中带有锚标记的链接时就会触发。

$(document).on('click', '.jump_to_instance', e => {

    // Get anchor name
    var anchorName = $(e.target).attr("href");

    // Set anchor to nothing first
    document.location.href = "#";

    // Set to new anchor value
    document.location.href = anchorName;
});

<a href="#myAnchor">Click me to go to anchor, I should work multiple times</a>

<div id="myAnchor">Will jump to here</div>

答案 5 :(得分:0)

重置锚链接单击事件上的滚动位置对我来说很有效。 看起来像theres at least one bug中带有定位链接的Chrome版本76-86(发布时为最新的macOS版本)。

尝试:

window.scrollTo(0, 0)