event.preventDefault () против возврата false

Когда я хочу предотвратить выполнение других обработчиков событий после того, как определенное событие запущено, я могу использовать один из двух методов. Я буду использовать jQuery в примерах, но это относится и к обычному JS:

1. event.preventDefault()

$('a').click(function (e) {
    // custom handling here
    e.preventDefault();
});

2. return false

$('a').click(function () {
    // custom handling here
    return false;
});

Есть ли существенная разница между этими двумя методами остановки распространения событий?

Для меня return false; проще, короче и, вероятно, менее подвержена ошибкам, чем выполнение метод. С помощью метода вы должны помнить о правильном регистре, скобках и т. Д.

Кроме того, мне нужно определить первый параметр в обратном вызове, чтобы иметь возможность вызывать метод. Возможно, есть некоторые причины, почему я должен избегать делать это так и использовать вместо этого preventDefault? Какой способ лучше?

2863
задан Brian Tompsett - 汤莱恩 26 August 2019 в 10:09
поделиться

3 ответа

return false из в обработчике событий jQuery фактически то же самое, что и вызов e.preventDefault и e.stopPropagation в переданном объекте jQuery.Event.

e.preventDefault () предотвратит возникновение события по умолчанию, e.stopPropagation () предотвратит всплытие события up и return false сделают и то, и другое. Обратите внимание, что это поведение отличается от обычных (не jQuery) обработчиков событий, в которых, в частности, return false не не останавливает всплытие события.

Источник: Джон Ресиг

Какие преимущества использования event.preventDefault () перед «return false» для отмены щелчка по href?

2770
ответ дан 22 November 2019 в 19:47
поделиться

Я думаю,

event.preventDefault ()

- это указанный w3c способ отмены событий.

Вы можете прочитать это в спецификации W3C на Отмена события .

Также вы не можете использовать return false в каждой ситуации. Если указать функцию javascript в атрибуте href и вы вернете false, то пользователь будет перенаправлен на страницу с записанной ложной строкой.

19
ответ дан 22 November 2019 в 19:47
поделиться

Вы можете повесить множество функций на событие onClick для одного элемента. Как вы можете быть уверены, что ложный выстрелит последним? preventDefault , с другой стороны, определенно предотвратит только поведение элемента по умолчанию.

40
ответ дан 22 November 2019 в 19:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: