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

Разница между $(this) и этим в jquery

В чем принципиальное отличие использования $(this) от этого

$('.viewComments').click(function(ev){
    //returns the desired value
    alert(this.getAttribute('id'));

    //Gives an error sayin function is not defined 
    alert($(this).getAttribute('id'));

    //returns the desired value
    alert($(this).attr('id'));
});

То, что я подумал, было "$ (this)" будет содержать все функции, которые "this" имеет и многое другое. Но это, похоже, не так.

Так что же такое $(это)? и

Hw Я знаю, какие функции доступны, когда я его использую? (Я знаю, что могу получить их через firebug, но я хотел бы знать, есть ли какой-либо другой способ - какой-то документ)

4b9b3361

Ответ 1

this - объект DOM, тогда как $(this) - обертка jQuery вокруг нее.

При использовании this вы можете вызвать методы DOM на нем, но не методы jQuery. При использовании $(this) вы можете вызывать методы jQuery на нем, но не методы DOM.

Ответ 2

$(this) - представляет текущий элемент DOM, на котором вызывается эта функция

Это ключевое слово. В JavaScript это всегда относится к "владельцу" функции, которую мы выполняем, или, вернее, к объекту, который является функцией.

Ответ 3

В jQuery это относится к объекту DOM, а $(this) относится к одному и тому же объекту, но с добавленными методами jQuery

вы не можете вызвать this.each(), потому что каждый из них не является методом DOM, его метод jquery

вы можете вызвать $(this).each(), потому что $(this) возвращает объект jquery

Ответ 4

Вот две статьи, которые могут оказаться полезными:

Что это? от Майка Альсупа

jQuery this: demystified от Remy Sharp

Ответ 5

$(this) - текущий объект, который был выбран с помощью селектора jQuery или события, прикрепленного к объекту.

поэтому, если у вас есть $('#myelement').click(....., то $(this) ссылается на элемент, на который был нажат, так что $(this).hide() скрывает этот элемент.

Ответ 6

в jQuery нотация $() является сокращением для селектора jQuery, поэтому, если вы скажете $(this), вы запрашиваете jQuery для повторного выбора вашего объекта. Тогда у вас есть обычные функции jQuery. "this" - это объект, выбранный внешним вызовом jQuery.