html якорь работает только один раз - PullRequest
3 голосов
/ 09 июля 2011

Мне стыдно сказать, что у меня проблема с якорем.

Итак, у меня есть этот код:

<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

Есть предложения? Спасибо

Ответы [ 5 ]

4 голосов
/ 09 июля 2011

Попробуйте location.hash , например,

location.hash='#map'
2 голосов
/ 08 июля 2016

Если вы прокручиваете и вам нужно прыгнуть снова, это сработало для меня:

onclick="location.hash=''; location.hash='#map';"
2 голосов
/ 14 июля 2011

Проблема была решена с помощью: document.location = "#map";

0 голосов
/ 21 августа 2017

Принятое решение не сработало для меня, к сожалению.Мне удалось заставить его работать в 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>
0 голосов
/ 09 июля 2011

Вы можете убедиться, что URL не содержит добавляемого вами значения:

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