Как предотвратить щелчок по '#', связываются от перехода до начала страницы?

Я в настоящее время использую <a> теги с jQuery для инициирования вещей как события щелчка, и т.д.

Пример <a href="#" class="someclass">Text</a>

Но я ненавижу, как '#' заставляет страницу перейти к верхней части страницы. Что я могу сделать вместо этого?

197
задан Paolo Forgia 2 October 2017 в 20:36
поделиться

8 ответов

В jQuery, когда вы обрабатываете событие щелчка, возвращает false, чтобы ссылка не отвечала обычным способом предотвращает действие по умолчанию, которое заключается в посещении атрибута href , от происходит (согласно комментарию PoweRoy и ответу Эрика ):

$('a.someclass').click(function(e)
{
    // Special stuff to do when this link is clicked...

    // Cancel the default action
    e.preventDefault();
});
230
ответ дан 23 November 2019 в 05:13
поделиться

Вы можете просто передать тег привязки без свойства href и использовать jQuery для выполнения необходимого действия:

bar

3
ответ дан 23 November 2019 в 05:13
поделиться

Если элемент не имеет значимого значения href, то на самом деле это не ссылка, так почему бы вместо этого не использовать какой-нибудь другой элемент?

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

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

4
ответ дан 23 November 2019 в 05:13
поделиться

Просто используйте аннотацию

<a href="javascript:;" class="someclass">Text</a>

JQUERY

$('.someclass').click(function(e) { alert("action here"); }
4
ответ дан 23 November 2019 в 05:13
поделиться

Если вы хотите использовать якорь, вы можете использовать http://api.jquery.com/event.preventDefault/ , как и другие ответы предложенный.

Вы также можете использовать любой другой элемент, например диапазон, и прикрепить к нему событие щелчка.

$("span.clickable").click(function(){
alert('Yeah I was clicked');
});
8
ответ дан 23 November 2019 в 05:13
поделиться

Чтобы избежать этого, можно использовать event.preventDefault () . Подробнее читайте здесь: http://api.jquery.com/event.preventDefault/ .

14
ответ дан 23 November 2019 в 05:13
поделиться

вы даже можете написать это вот так:

<a href="javascript:void(0);"></a>

я не уверен, что это лучший способ, но это способ :)

58
ответ дан 23 November 2019 в 05:13
поделиться
Другие вопросы по тегам:

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