вторник, 25 июня 2013 г.

jQuery return false

Привет!

Небольшая заметка про обработчики событий в jQuery.


Очень часто в различных примерах с использованием jQuery можно увидеть конструкции вроде:

$('a.link').click(function () {
    ...
    return false;
});

где в функции-обработчике события в целях предотвращения перехода по href после выполнения JS вместо event.preventDefault() используется return false. И это легко объяснимо — проще написать и не нужно ничего лишнего передавать в функцию. Однако подводный камень заключается в том, что возвращение false кроме вызова event.preventDefault() так же вызывает event.stopPropagation(), что в дальнейшем не позволяет использовать обработчики на родителях. В 95% случаев это не ожидаемое поведение и может привести к длительному happy debugging. Не усложняйте себе жизнь.

Подробнее и с примерами (en): http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

Кроме того, автор затрагивает тему правильного расположения вызова event.preventDefault().

Хорошего дня!