Небольшая заметка про обработчики событий в 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()
.Хорошего дня!