Когда я должен использовать return false в функции jquery? - PullRequest
34 голосов
/ 08 мая 2011

Я нашел множество функций, подобных этой:

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

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

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

Ответы [ 3 ]

61 голосов
/ 08 мая 2011

Согласно jQuery Events: Stop (Mis) Использование 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.Подробнее об этом читайте на jQuery's: demysified .

9 голосов
/ 08 мая 2011

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

3 голосов
/ 08 мая 2011

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

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

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