Остановить поведение хэштега по умолчанию с помощью jquery - PullRequest
8 голосов
/ 18 мая 2010

Я использую следующий код для добавления хэштега в конец URL. Таким образом, кто-то может скопировать этот URL и вернуть его на эту страницу, с определенными видимыми элементами div.

$("a.live").click(function() {
    window.location.hash = 'live'; 
    $("#live).slideDown();
});

В этом примере у меня есть div, называемый «live», который будет сдвигаться при нажатии на ссылку, и к URL добавляется «#live». Затем у меня есть код, который проверяет хэш-теги при загрузке страницы, чтобы показать правильные div.

Моя проблема в том, как я могу запретить браузеру переходить к «живому» div после его вызова? Я не хочу, чтобы страница прокручивалась вниз до div, просто хочу, чтобы она открывалась и добавлялся хэштег, чтобы человек мог скопировать ее и вернуться на эту страницу с этим показом div.

Какие-нибудь советы?

Спасибо!

Ответы [ 3 ]

8 голосов
/ 18 мая 2010

Попробуйте это:

$("a.live").click(function() {
    window.location.hash = 'live'; 
    $("#live").slideDown();
    return false; // this will prevent default action
});
8 голосов
/ 18 мая 2010

Это зависит. Если вы хотите предотвратить это при щелчке якоря, используйте это:

$("a.live").click(function(e) {
    e.preventDefault(); // Prevents browsers default action
    window.location.hash = 'live'; 
    $("#live").slideDown();
});

Если вы хотите предотвратить прокрутку страницы до хэша при загрузке страницы, я не уверен, как вы могли бы предотвратить это.

2 голосов
/ 18 мая 2010

Я предполагаю, что у вас есть код в событии готовности документа, который вы используете, чтобы открыть div, как вы говорите? Если это так, я бы посоветовал вам добавить префикс к идентификатору в хэше (например, #_live), чтобы идентификатор не был найден в документе и, следовательно, не позволил браузеру автоматически прокрутить этот элемент, а затем изменил код для удаления префикс при поднятии.

Я предлагаю этот «взлом», потому что я не думаю, что вы можете предотвратить такое поведение браузера с помощью JavaScript, по крайней мере, наверняка, ненадежно для кросс-браузерного решения.

...