Иногда приходится использовать ссылки без href или с якорями, поверх которых уже навешивается JavaScript-обработчик. Самыми распространёнными способами являются следующие:
<a href="javascript:void(0)">Я не сработаю</a>
Ужас в чистом виде образца начала 2000-х, если не более ранних, лет. Единственный плюс в том, что работать будет даже в очень древних браузерах.
<a id="my_link" href="#my_anchor">Я не сработаю</a> <script> $(document).ready(function(){ $("#my_link").click(function(){ //... return false; }); }); </script>
Не только предотвратит событие по умолчанию, но и, также, предотвратит всплытие события. Так что данный способ не подходит, если событие всё-таки должно всплыть.
<a id="my_link" href="#my_anchor">Я не сработаю</a> <script> $(document).ready(function(){ $("#my_link").click(function(e){ e.preventDefault(); //... }); }); </script>
Предотвратит только событие по умолчанию. Тут, кстати, частенько забывают про IE6, который про preventDefault ничего не знает и хочет вместо него e.returnValue = false
. Хотя, в jQuery это всё скрыто.
Для получения аналога return false
нужно добавить e.stopPropagation()
и, соответственно, e.cancelBubble = true
для любимого IE.
т.е. return false
= e.stopPropagation
+ e.preventDefault
.