Если вы не хотите, чтобы это указывало на что-либо, вам, вероятно, не следует использовать <a>тег (anchor).
Если вы хотите, чтобы что-то было похоже на ссылку, но не действовало как ссылка, лучше использовать соответствующий элемент (например, <span>), а затем стилизовать его с помощью CSS:
<spanclass="fake-link"id="fake-link-1">Am I a link?</span>
.fake-link {
color: blue;
text-decoration: underline;
cursor: pointer;
}
Кроме того, учитывая, что вы пометили этот вопрос "jQuery", я предполагаю, что вы хотите прикрепить обработчик событий щелчка. Если это так, просто сделайте то же самое, что и выше, а затем используйте что-то вроде следующего JavaScript:
$('#fake-link-1').click(function(){/* put your code here */});
У этого есть проблема: это не позволяет навигацию по вкладкам.
6
Обратите внимание, что (как указывает Iraimbilanja) подход span позволяет отключить возможность вызова функции с помощью клавиатуры, что я считаю проблемой юзабилити.
Фредрик Мёрк
3
Также проблема доступности. Вы можете разрешить это, используя элемент кнопки (сгенерированный из JavaScript, чтобы пользователи, не являющиеся JS, не получили сломанный элемент управления).
Квентин
4
Вот быстрое решение для этого: tabindex = "0" для не связанного элемента включит навигацию с клавиатуры в большинстве современных браузеров.
Матиас Биненс
1
Другая «проблема» заключается в том, что у вас нет псевдо-класса CSS: hover, который не будет работать с элементами, которые не являются ссылками в IE6. Но так как вы все равно добавляете эти элементы через JavaScript (по крайней мере, вам следует), вы также можете написать скрипт, который добавляет класс .hover к элементу при наведении.
Матиас Биненс
268
Есть несколько менее совершенных решений:
1. Ссылка на фальшивый якорь
<ahref="#">
Проблема: при нажатии на ссылку происходит возврат к началу страницы
2. Использование тега, отличного от «а»
Используйте тег span и используйте jquery для обработки клика
Проблема: ломает навигацию клавиатуры, приходится вручную менять курсор при наведении
Проблема: ломается при связывании изображений в IE
Решение
Поскольку у них у всех есть свои проблемы, решение, на котором я остановился, состоит в том, чтобы связать с фальшивым якорем, а затем вернуть false из метода onClick:
<ahref="#"onClick="returnfalse;">
Не самое лаконичное решение, но оно решает все проблемы с помощью вышеуказанных методов.
Я обычно использую JavaScript: void (0); подход, потому что использование # отображает текущий URL в панели Firefox при наведении курсора мыши, что может ввести пользователя в заблуждение.
Lucaferrario
8
breaks when linking images in IEЧто это значит?
Евгений
14
@eugene этому вопросу уже 3 года, но IE раньше заставлял изображения исчезать, когда они окружены ссылкой на функцию void. Не уверен, когда это было исправлено, но он работает в IE10, и это все, что я установил. Я лично сейчас использую<a href="javascript:;">
zaius
1
Я также использовал там комментарии: <a href="javascript:void(0); // Показать свойства palette">. Таким образом, когда пользователь наводит курсор мыши, он видит комментарий, который может дать им подсказку, чего ожидать при нажатии. (Хотя вы также можете использовать всплывающую подсказку.)
Робин Циммерманн
5
Кажется, этого href="javascript:"тоже достаточно и работает в последних крупных браузерах. Точка с запятой не нужна, ведь PhpStorm даже предлагает ее удалить.
17
40
Чтобы заставить его вообще ничего не делать, используйте это:
Хотя это звучит так, как будто это «правильно», потому что останавливает всплытие событий, «return false» гораздо менее многословно и делает то же самое. Единственный раз, когда вы захотите это сделать, - это если у вас уже есть зарегистрированные обработчики событий для кликов по ссылкам через jQuery.
aleemb
25
Есть так много способов сделать это как
Не добавлять и hrefатрибут
<aname="here"> Test <a>
Вы можете добавить событие onclick вместо href как
<aname="here"onclick="YourFunction()"> Test <a>
Или вы можете добавить функцию void, как это было бы лучшим способом
Не забудьте установить стиль вашего тега привязки, если вы удалите hrefатрибут, так как он больше не будет вести себя как гиперссылка (даже при том, что onclick все еще работает), вам придется сбросить такие вещи, как cursor: pointer;и :hoverселектор.
Этот ответ должен быть обновлен с учетом новых веб-стандартов (HTML5).
Это:
<atabindex="0">This represents a placeholder hyperlink</a>
... действителен HTML5. Атрибут tabindex делает клавиатуру фокусируемой, как обычные гиперссылки. Вы могли бы также использовать spanэлемент для этого, как упомянуто ранее, но я считаю, что использование aэлемента более элегантно.
Это также допустимый HTML4, но он не будет стилизовать якорь как ссылку.
interjay
1
Я не знал, что это был действительный html4, но в спецификации HTML5 явно упоминается сценарий использования. И стили, которые не нацелены на атрибут href, будут работать просто отлично, могут возникнуть проблемы со стилями браузера по умолчанию.
aross
1
Это также не вызывает clickсобытие, когда пользователь фокусирует элемент и нажимает клавишу ввода (протестировано в Firefox 51).
Торвин
@torvin, это просто. Используйте keydownсобытие.
aross
Причудливая причуда, но в окне 10 она добавляет рамку вокруг элемента
1-14x0r
12
Вот три способа, которыми свойство <a>tag hrefтега ни на что не ссылается:
<ahref="JavaScript:void(0)"> link </a><ahref="javascript:;">link</a><ahref="#"onclick="returnfalse;"> Link </a>
Я знаю, что это старый вопрос, но я все равно решил добавить свои два цента:
Это зависит от того, что будет делать ссылка, но обычно я указываю ссылку на URL, который, возможно, отображает / делает то же самое, например, если вы делаете немного о всплывающем окне:
Таким образом, очень старые браузеры (или браузеры с отключенным JavaScript) могут по-прежнему переходить на отдельную страницу about, но, что более важно, Google также подберет это и просканирует содержимое страницы about.
Спасибо! Это отлично сработало для моего случая. Где я хотел, чтобы тег Anchor открывался на новой вкладке, когда есть URL, но ничего, если нет URL. В случае # он принимал клик и перемещал его в начало страницы. Не имея части href, как вы предложили. Это решило проблему! Форматирование выглядит великолепно благодаря тегу, проблема кликов исчезла без всяких ссылок. Спасибо!!!
Мохсин
1
Если кто-то еще думает, является ли он верным в HTML5, ответьте ДА :) stackoverflow.com/a/33046203/5323892 . Вот пример со страницы стандартов (см. Третий элемент li): <nav> <ul> <li> <a href="https://stackoverflow.com/"> Главная страница </a> </ li> <li> <a href = "/ news "> News </a> </ li> <li> <a> Примеры </a> </ li> <li> <a href="https://stackoverflow.com/legal"> Legal </a> </ li> </ ul> </ nav>
Мохсин
Это работает, но если вы хотите, чтобы указатель мыши сменился на палец, просто добавьте href = "JavaScript: void (0)", как предложено в ответе @Rutesh Makhijani.
Тарик
3
Единственное, что сработало для меня, это сочетание вышеперечисленного:
это был мой якорный тег. так что возвращать false on onClick = "" событие здесь бесполезно. Я только что удалил свойство href = "#", и оно работало для меня, как показано ниже
Я столкнулся с этой проблемой на сайте WordPress. Заголовки в выпадающих меню всегда имели атрибут, href=""а используемый плагин заголовка допускал только стандартные URL-адреса. Самым простым решением было просто запустить этот код в нижнем колонтитуле:
React больше не поддерживает использование такой функции href="javascript:void(0)"в вашем теге привязки, но здесь есть кое-что, что работает довольно хорошо.
Я знаю, что это помечено как вопрос jQuery, но вы также можете ответить на него с помощью AngularJS.
в вашем элементе добавьте директиву ng-click и используйте переменную $ event, которая является событием click ... предотвратите его поведение по умолчанию:
<ahref="#"ng-click="$event.preventDefault()">
Вы даже можете передать переменную $ event в функцию:
<ahref="#"ng-click="doSomething($event)">
в этой функции вы делаете все, что хотите с событием click.
href
атрибут в нем.Ответы:
Если вы не хотите, чтобы это указывало на что-либо, вам, вероятно, не следует использовать
<a>
тег (anchor).Если вы хотите, чтобы что-то было похоже на ссылку, но не действовало как ссылка, лучше использовать соответствующий элемент (например,
<span>
), а затем стилизовать его с помощью CSS:Кроме того, учитывая, что вы пометили этот вопрос "jQuery", я предполагаю, что вы хотите прикрепить обработчик событий щелчка. Если это так, просто сделайте то же самое, что и выше, а затем используйте что-то вроде следующего JavaScript:
источник
Есть несколько менее совершенных решений:
1. Ссылка на фальшивый якорь
Проблема: при нажатии на ссылку происходит возврат к началу страницы
2. Использование тега, отличного от «а»
Используйте тег span и используйте jquery для обработки клика
Проблема: ломает навигацию клавиатуры, приходится вручную менять курсор при наведении
3. Ссылка на пустую функцию JavaScript
Проблема: ломается при связывании изображений в IE
Решение
Поскольку у них у всех есть свои проблемы, решение, на котором я остановился, состоит в том, чтобы связать с фальшивым якорем, а затем вернуть false из метода onClick:
Не самое лаконичное решение, но оно решает все проблемы с помощью вышеуказанных методов.
источник
breaks when linking images in IE
Что это значит?<a href="javascript:;">
href="javascript:"
тоже достаточно и работает в последних крупных браузерах. Точка с запятой не нужна, ведь PhpStorm даже предлагает ее удалить.Чтобы заставить его вообще ничего не делать, используйте это:
источник
<a href="javascript:;">
. PS не работает сtarget=_blank
хотяПравильный способ справиться с этим - «разорвать» ссылку с помощью jQuery при обработке ссылки.
HTML
JS
Эти последние два вызова не позволяют браузеру интерпретировать щелчок.
источник
Есть так много способов сделать это как
Не добавлять и
href
атрибутВы можете добавить событие onclick вместо href как
Или вы можете добавить функцию void, как это было бы лучшим способом
источник
href
атрибут, так как он больше не будет вести себя как гиперссылка (даже при том, что onclick все еще работает), вам придется сбросить такие вещи, какcursor: pointer;
и:hover
селектор.Что вы подразумеваете под ничем?
или
источник
Я думаю, что вы можете попробовать
Единственный улов, который я вижу здесь, это высокий уровень безопасности браузера, который может вызвать выполнение javascript.
Хотя это один из более простых способов, чем
это следует использовать экономно
Прочитайте эту статью для некоторых указателей https://web.archive.org/web/20090301044015/http://blog.reindel.com/2006/08/11/a-hrefjavascriptvoid0-avoid-the-void
источник
Этот ответ должен быть обновлен с учетом новых веб-стандартов (HTML5).
Это:
... действителен HTML5. Атрибут tabindex делает клавиатуру фокусируемой, как обычные гиперссылки. Вы могли бы также использовать
span
элемент для этого, как упомянуто ранее, но я считаю, что использованиеa
элемента более элегантно.См .: https://w3c.github.io/html-reference/a.html
и: https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-href.
источник
click
событие, когда пользователь фокусирует элемент и нажимает клавишу ввода (протестировано в Firefox 51).keydown
событие.Вот три способа, которыми свойство
<a>
taghref
тега ни на что не ссылается:источник
Я знаю, что это старый вопрос, но я все равно решил добавить свои два цента:
Это зависит от того, что будет делать ссылка, но обычно я указываю ссылку на URL, который, возможно, отображает / делает то же самое, например, если вы делаете немного о всплывающем окне:
Потом с помощью jQuery
Таким образом, очень старые браузеры (или браузеры с отключенным JavaScript) могут по-прежнему переходить на отдельную страницу about, но, что более важно, Google также подберет это и просканирует содержимое страницы about.
источник
Убедитесь, что все ваши ссылки, которые вы хотите прекратить иметь
href="#!"
(или все, что вы хотите, действительно), а затем используйте это:источник
Вы можете иметь HTML-привязку (
a
тег) безhref
атрибута. Оставьтеhref
атрибут, и он не будет ссылаться ни на что:источник
Единственное, что сработало для меня, это сочетание вышеперечисленного:
Первый ли в уль
Затем в LoadTab2_1 я вручную переключил вкладку div
Это потому, что отключение также отключает действие на вкладках
Вам также нужно вручную оформить вкладку, когда основная вкладка меняет положение вещей.
источник
Вы можете сделать это,
источник
это был мой якорный тег. так что возвращать false on onClick = "" событие здесь бесполезно. Я только что удалил свойство href = "#", и оно работало для меня, как показано ниже
и мне нужно было добавить этот CSS.
источник
Я столкнулся с этой проблемой на сайте WordPress. Заголовки в выпадающих меню всегда имели атрибут,
href=""
а используемый плагин заголовка допускал только стандартные URL-адреса. Самым простым решением было просто запустить этот код в нижнем колонтитуле:Это не позволит пустым якорям делать что-либо.
источник
React больше не поддерживает использование такой функции
href="javascript:void(0)"
в вашем теге привязки, но здесь есть кое-что, что работает довольно хорошо.источник
Я знаю, что это помечено как вопрос jQuery, но вы также можете ответить на него с помощью AngularJS.
в вашем элементе добавьте директиву ng-click и используйте переменную $ event, которая является событием click ... предотвратите его поведение по умолчанию:
Вы даже можете передать переменную $ event в функцию:
в этой функции вы делаете все, что хотите с событием click.
источник