<rmcreative>

RSS

Все заметки с тегами «events, JavaScript»

  1. Предотвратить действие ссылки по умолчанию

    8 октября 2010

    Иногда приходится использовать ссылки без 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.

    7 комментариев