Какая разница между $(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.