В настоящее время я использую <a>
теги с jQuery для запуска таких вещей, как события щелчка и т. Д.
Пример <a href="#" class="someclass">Text</a>
Но я ненавижу, как "#" заставляет страницу переходить наверх страницы. Что я могу сделать вместо этого?
javascript
jquery
html
st4ck0v3rfl0w
источник
источник
Ответы:
В jQuery, когда вы обрабатываете событие click,
верните false, чтобы ссылка не отвечала обычным образомпредотвратить действие по умолчанию, которое заключается в посещенииhref
атрибута (согласно комментарию PoweRoy и ответу Эрика ):источник
$('a[href=#]').click(function(e) { e.preventDefault(); });
Так что это старо, но ... на тот случай, если кто-то найдет это в поиске.
Просто используйте
"#/"
вместо,"#"
и страница не будет прыгать.источник
/
, а не потому, что#/
имеет какое-либо значение. Вы можете сделать то же самое,#whateveryouwant
и это предотвратит скачок к вершине#/
или чего-либо еще, например#whatever
.Вы даже можете написать это так:
я не уверен, что это лучший способ, но это способ :)
источник
href='javascript:;'
но будьте осторожны, он вызывает событие window.beforeUnload в IEРешение № 1: (простой)
Решение № 2: (необходимо
javascript
)Решение № 3: (необходимо
jQuery
)источник
Вы можете использовать,
event.preventDefault()
чтобы избежать этого. Подробнее читайте здесь: http://api.jquery.com/event.preventDefault/ .источник
Просто используйте
<input type="button" />
вместо<a>
и используйте CSS для стилизации, чтобы он выглядел как ссылка, если хотите.Кнопки сделаны специально для нажатия, и им не нужны никакие атрибуты href.
Наилучшим способом является использование действия onload для создания кнопки и добавления ее в нужное место через javascript, поэтому при отключенном javascript они вообще не будут отображаться и не будут вводить пользователя в заблуждение.
При использовании
href="#"
вы получаете множество различных ссылок, указывающих на одно и то же местоположение, что не будет работать, если агент не поддерживает JavaScript.источник
#
.Если вы хотите использовать привязку, вы можете использовать http://api.jquery.com/event.preventDefault/, как и в других предложенных ответах.
Вы также можете использовать любой другой элемент, например, span, и прикрепить к нему событие click.
источник
Вы можете использовать
#0
как href, так0
как не разрешено в качестве идентификатора, страница не будет прыгать.источник
источник
Просто используйте
Jquery
источник
Если элемент не имеет значащего значения href, то это на самом деле не ссылка, так почему бы вместо этого не использовать какой-то другой элемент?
Как предполагает Neothor, интервал такой же подходящий, и, если он правильно оформлен, он будет явно виден как элемент, по которому можно щелкнуть. Вы можете даже прикрепить событие hover, чтобы элемент «загорался», когда мышь пользователя перемещается над ним.
Однако, сказав это, вы, возможно, захотите переосмыслить дизайн вашего сайта, чтобы он функционировал без javascript, но усиливался javascript, когда он стал доступен.
источник
Ссылки с href = "#" почти всегда должны заменяться элементом кнопки:
Использование ссылок с href = "#" также является проблемой доступности, так как эти ссылки будут видны программам чтения с экрана, которые будут читать "Ссылка-текст", но если пользователь щелкнет, он никуда не денется.
источник
Вы можете просто передать тег привязки без свойства href и использовать jQuery для выполнения требуемого действия:
<a class="foo">bar</a>
источник
#
, я предположил, что это вас не беспокоит, и поэтому предложил это решение, так как это, вероятно, самый простой способ удовлетворить ваши потребности.a:link
Селекторы CSS не будут нацелены на этот тег привязки.Я использовал:
источник
#/
Трюк работает, но добавляет событие истории в браузере. Таким образом, нажатие назад не работает, поскольку пользователь может захотеть / ожидать этого.$('body').click('a[href="#"]', function(e) {e.preventDefault() });
Это мой путь, так как он работает для уже существующего контента и любых элементов, добавляемых в DOM после загрузки.В частности, мне нужно было сделать это в раскрывающемся меню начальной загрузки внутри
.btn-group
(ссылка) , поэтому я сделал:$('body').click('.dropdown-menu li a[href="#"]', function(e) {e.preventDefault() });
Таким образом, это было нацелено, и больше ничего не влияло на страницу.
источник
Я всегда использовал:
при попытке предотвратить скачок страницы. Не уверен, что это лучше, но, кажется, он работал хорошо в течение многих лет.
источник
Существует 4 аналогичных способа предотвратить переход страницы наверх без использования JavaScript:
Опция 1:
Вариант 2:
Вариант 3:
Вариант 4 ( не рекомендуется ):
Но лучше использовать,
event.preventDefault()
если вы передаете событие click в jQuery.источник
Вы также можете вернуть false после обработки вашего jquery.
Например.
источник
Я использую что-то вроде этого:
источник
Чтобы страница не перепрыгнула, вам нужно позвонить
e.stopPropagation();
после звонкаe.preventDefault();
:stopPropagation
препятствует тому, чтобы событие поднялось по дереву DOM. Более подробная информация здесь: https://api.jquery.com/event.stoppropagation/источник
Если вы хотите перейти в раздел «Якорь» на той же странице без перехода по страницам вверх, используйте:
Просто используйте "# /" вместо "#", например
источник
Добавление чего-либо после
#
устанавливает фокус страницы на элемент с этим идентификатором. Простейшее решение - использовать,#/
даже если вы используете jQuery. Однако, если вы обрабатываете событие в jQuery,event.preventDefault()
это путь.источник
<a href="#!">Link</a>
И<a href="#/">Link</a>
не работает , если один должен нажать на тот же вход более чем один раз .. она принимает только в 1 клик событий для каждого на несколько входов.до сих пор лучший способ пойти с
<a href="#">Link</a>
затем,
источник