Ответ 1
То, что я напишу здесь, верно для событий jQuery,
Для ванильных событий javascript читайте @T.J. Комментарий Crowder в нижней части ответа
return false
внутри обратного вызова предотвращает поведение по умолчанию. Например, в событии submit
он не отправляет форму.
return false
также останавливает пузырьки, поэтому родители элемента не будут знать, что произошло событие.
return false
эквивалентен event.preventDefault()
+ event.stopPropagation()
И, конечно, весь код, который существует после строки return xxx
, не будет выполнен. (как и во всех языках программирования, которые я знаю)
Возможно, вы найдете это полезным:
Прекратить событие пузыря - увеличивает производительность?
"реальная" демонстрация, чтобы объяснить разницу между return false
и event.preventDefault()
:
Разметка:
<div id="theDiv">
<form id="theForm" >
<input type="submit" value="submit"/>
</form>
</div>
JavaScript:
$('#theDiv').submit(function() {
alert('DIV!');
});
$('#theForm').submit(function(e) {
alert('FORM!');
e.preventDefault();
});
Теперь... когда пользователь отправляет форму, первым обработчиком является форма submit, которая preventDefault()
→ форма не будет отправлена, но событие пузырится в div, вызывая его отправителем.
Теперь, если обработчик отправки формы отменит буксование с помощью return false
:
$('#theDiv').submit(function() {
alert('DIV!');
});
$('#theForm').submit(function(event) {
alert('FORM!');
return false;
// Or:
event.preventDefault();
event.stopPropagation();
});
Див даже не знал, что есть форма представления.
Что делает return false
в событиях javascript в ваниле
return false из обработчика DOM2 (
addEventListener
) ничего не делает (не предотвращает по умолчанию и не останавливает пузырьки; из обработчика Microsoft DOM2-ish (attachEvent
) он предотвращает по умолчанию, но не пузырится, из DOM0 (onclick="return ..."
), он предотвращает по умолчанию (при условии, что вы включаете возврат в атрибут), но не пузырясь, из обработчика события jQuery он выполняет оба действия, потому что это вещь jQuery. Подробности и живые тесты здесь - TJ Crowder