2012-04-23 2 views
2

Я просто ранил то, что является предпочтительным способом пропускать поведение, которое браузер меняет местоположение при нажатии на элемент ссылки (A) со встроенным кодом.Пропуск места смены при нажатии на ссылку

<a href="javascript:void(0)">void(0)</a> // I have always used this one 

Или

<a href="javascript:;">:;</a> // This one is simple and now a days my favourite 

Или

<a href="#">#</a> // Scroll to the top 

Или как вы это делаете, и почему? Что лучше всего?

ответ

0

Я предпочитаю использовать onclick вместо тега href javascript. Но если вам нужно, верните false. Это остановит браузер от действия по умолчанию (изменение URL-адреса). Там также нет ни одной стороны, с которой я знаю, с двумя в первую очередь. Избегайте третьего, это может привести к прокрутке страницы на очень длинных страницах и загрязнению истории навигатора.

<a href="javascript:dostuff(); return false;">Do nothing</a> 
0

Это зависит от того, почему вы хотите пропустить поведение по умолчанию. С помощью методов, которые вы показываете выше, ссылки не очень полезны, потому что их атрибуты href не содержат никакой информации. Они просто заполнители ... вы могли бы просто ссылаться на несуществующий ID, <a href="#phlogiston">dummy link</a>, и он ничего не будет делать при нажатии.

Если вы хотите, чтобы у ссылки был нормальный атрибут href, но чтобы сделать что-то еще при щелчке, вы не сделали бы это inline. Вместо этого вы вызываете метод event.preventDefault() всякий раз, когда ссылка запускает событие клика, используя скрипт, загружаемый страницей. Также см. Этот ответ: event.preventDefault() vs. return false

+0

То не так, пустой HREF будет перезагрузить страницу actully при ее нажатии. True для Chrome –

+0

Спасибо, Саймон, вы правы! –

0

Лично я предпочитаю «вводить» действия в ссылки вместо смешивания js и html. Вам не нужно сканировать HTML для поведения javascript таким образом.

Быстрый пример использования JQuery: http://jsfiddle.net/5nbXT/

+0

Я не знаю, но я думаю, что этот couse лишние накладные расходы для клиента, который он должен обрабатывать для всех элементов в селекторе и активировать обработчик событий. –

+0

@ SimonEdström Конечно, если вы являетесь пуристом, этот метод, вероятно, добавит несколько наносекунд времени обработки при загрузке ... Но, честно говоря, DOM-трансверсация настолько быстра в наши дни, это практически неотличимо от встроенной версии. –

Смежные вопросы