Подтвердить что ты не робот

Какая разница между $(this) и этим в jQuery?

Какая разница между $(this) и this в jQuery и почему они иногда дают одинаковый результат и другие времена ведут себя по-другому?

4b9b3361

Ответ 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.