JQuery - Когда использовать "this" и когда использовать "$ (this)"?

Возможный дубликат:
jQuery $(this) vs this

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

Как узнать, какой из них использовать?

Связанный, я думаю:

С каждым из них у вас есть дополнительные параметры. Как "i" отличается от "this" (или "$ (this)" )?

$('img').each(function(i) { ....code }

против.

$('img').each(function() { ....code }

Ответ 1

объект this не изменяется. Это владелец функции. В большинстве случаев это просто node, и вы можете ссылаться на все его свойства, например this.className. (подумайте об этом как о node или о том, что вы получите с помощью document.getElementById). Это просто "владелец" функции.

Следовательно, вы просто передаете объект this в jQuery $().

Заключение. Если вы хотите использовать функции jQuery для текущего node, используйте $(this). Но если вы хотите получить доступ к собственным свойствам объектов (например, .name, className, .id), просто используйте this.

Ответ 2

это для javascript, $(this) для jQuery. вы можете использовать $(this) для всех функций jQuery, а не для этого.

Изменить: Для вашего примера я - это просто инкрементированное число, на котором он находится (0 1-й 10 the 11the), $(this) - это элемент img, который вы можете сделать либо:

$(this).on('click', function() { console.log(123); });
or
$('img').eq(i).on('click', function() { console.log(123); });

Edit2: Вот как это сделать:

var sorter = {
    sort: function() {
        console.log('sorting');
    },
    requestSorting: function() {
        this.sort();
    }
}
sorter.requestSorting.bind(sorter);

В этом примере он точно используется как $this в классе PHP. Вот почему я сказал это больше для чистых функций javascript.

Ответ 3

this в jQuery обычно указывает на элемент DOM, например HTMLSelectElement.

Переименование его с помощью функции jQuery позволяет вам называть методы jQuery на нем.

Ответ 4

Помещение этого внутри $() превращает это в объект jquery, с возможностью вызова всех типичных методов jQuery. это само по себе это просто нормальная ссылка на javascript для данного объекта/элемента.

Ответ 5

$( ".class" ).click( function () {

  $( this ).load( "/path/to/file.html" );

} );

В этом примере this ссылается на div .class и загружает содержимое file.html в указанный div, когда вы нажимаете на него.

Итак, нажмите .class, file.html загрузится в него.

Ответ 6

Требуется ли вам $(это) или нет, зависит от контекста, в котором вы работаете.

Нужно:

  • При обработке событий jQuery это передается как элемент DOM, вызвавший событие $(this), превращает DOM-элемент в объект jQuery

  • Каждый раз, когда вы получаете элемент DOM Другие экземпляры, где у вас есть элемент DOM (или объект) и хотите превратить его в объект jQuery

Не нужно:

  • Внутри подключаемого модуля jQuery Функция jQuery plug-in (jquery.fn) - это объект jQuery, поэтому здесь не нужно применять $(this).

Никакого вреда в $(this), даже если это объект jQuery, потому что jQuery просто вернет тот же объект.