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 просто вернет тот же объект.