Остановите поведение хэш-тега по умолчанию с jQuery

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

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

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

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

Какие-либо подсказки?

Спасибо!

8
задан Andelas 17 May 2010 в 20:02
поделиться

3 ответа

Попробуйте следующее:

$("a.live").click(function() {
    window.location.hash = 'live'; 
    $("#live").slideDown();
    return false; // this will prevent default action
});
8
ответ дан 5 December 2019 в 09:24
поделиться

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

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

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

8
ответ дан 5 December 2019 в 09:24
поделиться

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

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

2
ответ дан 5 December 2019 в 09:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: