Когда мне следует использовать return false в функции jquery?

Я нашел много таких функций:

$(function() {
    $("body a").click(function() {
        alert(this.innerHTML);
        return false;
    });
});

В чем разница между this и $(this) в jquery?

У всех есть строчка return false; - я не знаю, когда мне следует использовать return false в функции jquery, и не знаю, какой от этого толк?


person zhuanzhou    schedule 08.05.2011    source источник


Ответы (3)


Согласно jQuery Events : Stop (Mis) Using Return False (заархивированная ссылка), возвращение false при вызове выполняет три задачи:

  1. event.preventDefault ();
  2. event.stopPropagation ();
  3. Останавливает выполнение обратного вызова и немедленно возвращается при вызове.

Единственное действие, необходимое для отмены поведения по умолчанию, - preventDefault(). Выдача return false; может создать неустойчивый код. Обычно вам нужно только это:

$("a").on( 'click', function (e) {
    // e == our event data
    e.preventDefault();
});

А во-вторых, this - это элемент DOM в javascript, а $ (this) - это элемент jQuery, который ссылается на элемент DOM. Дополнительную информацию по теме см. На странице this: demystified в jQuery.

person gruntled    schedule 08.05.2011
comment
Заархивированная страница выглядит как исходная, не отвечает atm: http://web.archive.org/web/20160603125641/http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/ - person PF4Public; 16.01.2017

Вы нажимаете на якорь, поведение которого по умолчанию - куда-то перемещаться. Возврат false может быть попыткой предотвратить навигацию и удержать пользователя на текущей странице / просмотре.

person Kon    schedule 08.05.2011

В рамках обработчика кликов this - это развернутый элемент DOM. $(this) оборачивает его и возвращает элемент jQuery. Обычно это оборачивают один раз и делают доступным в области видимости как that или часто $this (добавление к именам переменных префикса $ - это соглашение, указывающее на элемент jQuery).

Таким образом, ваш пример может быть записан как

$(function() {
    $("body a").click(function() {
        var $this = $(this);
        alert($this.html());
        return false;
    });
});
person Rob Cowie    schedule 08.05.2011