Какая разница между $(this)
и this
в jQuery и почему они иногда дают одинаковый результат и другие времена ведут себя по-другому?
Какая разница между $(this) и этим в jQuery?
Ответ 1
$(this)
wraps this
с помощью функции jQuery.
Например, этот код не сработает:
$('.someDiv').onClick(function(){
// this refers to the DOM element so the following line would fail
this.fadeOut(100);
});
Итак, мы завершаем this
в jQuery:
$('.someDiv').onClick(function(){
// wrap this in jQuery so we can use jQuery fadeOut
$(this).fadeOut(100);
});
Ответ 2
$(this)
украшает любой объект this
с помощью функций jQuery. Типичным примером использования является this
для ссылки на элемент DOM (например, a <div>
). Затем запись $(this)
позволяет использовать все функции API jQuery на этом <div>
.
Если this
уже ссылается на объект jQuery - обычно объект DOM, декорированный jQuery, то вызов $(this)
не будет иметь эффекта, потому что он уже украшен.
Ответ 3
Если в вашем текущем контексте, если this
не является объектом jQuery, вы можете сделать его элементом jQuery, обернув его вокруг $()
. Когда ваш элемент уже является результатом выражения jQuery, this
в этом случае уже является объектом jQuery. Таким образом, в этом случае оба они работают одинаково
Ответ 4
чтобы вы поняли немного лучше, сделайте себе отладчика somekind, такого как google chrome, и сделайте это.
$('a').click(function(){
console.log(this); //DO
console.log($(this)); //JO
});
это покажет вам, в чем разница:)
Ответ 5
this
- это переменная javascript, созданная всякий раз, когда вы находитесь внутри функции, прикрепленной к объекту. В этих случаях this
относится к этому объекту.
$(this)
возвращает объект jQuery, на который вы можете вызывать функции jQuery, но будет применяться только к this
.
Например, если вы установите обработчик кликов для всех якорей:
$('a').click(function() {
console.log(this.href) ;
}) ;
то this
относится к якорю, к которому привязано событие (функция) click.
Ответ 6
$(this) == this? интересно.
это не должно проходить через событие DOM.
Ответ 7
В JavaScript это всегда относится к "владельцу" выполняемой функции. Использование $(this) приведет только к обертке владельца, чтобы все операции jQuery были расширены и доступны для него.
Рассмотрим:
$links = $('#content a');
$links.click(function() {
link = this;
$link = $(this); //jQuery wrapped object.
alert(link.getAttribute('href'));
alert($link.attr('href')); //we can use the attr() function from jQuery
});
Они обычно дают одинаковые результаты, так как владелец тот же, только тот, который обернут jQuery, может работать с функциями jQuery.