У меня есть события click, настроенные следующим образом:
$('.dialogLink')
.click(function () {
dialog(this);
return false;
});
У всех есть "return false"
Может кто-нибудь объяснить, что это делает и если это необходимо?
У меня есть события click, настроенные следующим образом:
$('.dialogLink')
.click(function () {
dialog(this);
return false;
});
У всех есть "return false"
Может кто-нибудь объяснить, что это делает и если это необходимо?
Когда вы возвращаете false
из обработчика события, он предотвращает действие по умолчанию для этого события и останавливает событие, пузырящееся через DOM. То есть это эквивалент этого:
$('.dialogLink')
.click(function (event) {
dialog(this);
event.preventDefault();
event.stopPropagation();
});
Если '.dialogLink'
является элементом <a>
, то его действие по умолчанию при щелчке - это перейти к href
. Возврат false
из обработчика кликов предотвращает это.
Что касается необходимости в вашем случае, я бы предположил, что ответ "да", потому что вы хотите отобразить диалоговое окно в ответ на клик, а не на навигацию. Если элемент, на который вы положили обработчик кликов, не имеет действия по умолчанию при щелчке (например, обычно ничего не происходит, когда вы нажимаете div), тогда вам не нужно возвращать false, потому что ничего не отменять.
Если вы хотите что-то сделать в ответ на щелчок, но продолжайте навигацию по умолчанию, то не возвращайте false.
Дальнейшее чтение:
Возвращаемое значение обработчика события определяет, должно ли происходить поведение браузера по умолчанию. В случае щелчка по ссылкам это будет следовать за ссылкой, но разница наиболее заметна в обработчиках отправки формы, где вы можете отменить отправку формы, если пользователь сделал ошибку, вводя информацию.
Я не верю, что для этого есть спецификация W3C. Все древние интерфейсы JavaScript, подобные этому, получили прозвище "DOM 0" и в основном не указаны. Возможно, вам повезло прочитать старую документацию Netscape 2.
Современный способ достижения этого эффекта - вызвать event.preventDefault()
, и это указано в спецификации DOM 2 Events.
Итак, правильный путь:
$('.dialogLink')
.click(function (e) {
dialog(this);
e.preventDefault();
e.stopPropagation(); // Stop bubbling up
});
Возвращаемое значение обработчика события определяет, должно ли происходить поведение браузера по умолчанию. В случае щелчка по ссылкам это будет следовать за ссылкой, но разница наиболее заметна в обработчиках отправки формы, где вы можете отменить отправку формы, если пользователь сделал ошибку, вводя информацию.