Разница между $ (этим) и этим в jquery - PullRequest
64 голосов
/ 03 сентября 2010

В чем принципиальная разница между использованием $ (this) и 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» и многое другое ... Но этоКажется, это не так.

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

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

Ответы [ 7 ]

141 голосов
/ 03 сентября 2010

this - это объект DOM, тогда как $(this) - это оболочка jQuery примерно того же.

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

8 голосов
/ 03 сентября 2010

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

Ключевое слово this - В JavaScript это всегда относится к «владельцу”Функции, которую мы выполняем, или, скорее, для объекта, для которого функция является методом.

3 голосов
/ 03 сентября 2010

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

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

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

2 голосов
/ 03 сентября 2010

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

Что это? от Mike Alsup

jQuery's: демистификация Реми Шарпом

1 голос
/ 03 сентября 2010

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

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

0 голосов
/ 30 марта 2018

$ (this) является объектом jQuery, и вы можете использовать всю мощь и красоту jQuery, но с ключевым словом «this» необходимо использовать собственный JavaScript.

0 голосов
/ 03 сентября 2010

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

...