Ответ 1
this
- объект DOM, тогда как $(this)
- обертка jQuery вокруг нее.
При использовании this
вы можете вызвать методы DOM на нем, но не методы jQuery. При использовании $(this)
вы можете вызывать методы jQuery на нем, но не методы DOM.
В чем принципиальное отличие использования $(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, но я хотел бы знать, есть ли какой-либо другой способ - какой-то документ)
this
- объект DOM, тогда как $(this)
- обертка jQuery вокруг нее.
При использовании this
вы можете вызвать методы DOM на нем, но не методы jQuery. При использовании $(this)
вы можете вызывать методы jQuery на нем, но не методы DOM.
$(this) - представляет текущий элемент DOM, на котором вызывается эта функция
Это ключевое слово. В JavaScript это всегда относится к "владельцу" функции, которую мы выполняем, или, вернее, к объекту, который является функцией.
В jQuery это относится к объекту DOM, а $(this
) относится к одному и тому же объекту, но с добавленными методами jQuery
вы не можете вызвать this.each()
, потому что каждый из них не является методом DOM, его метод jquery
вы можете вызвать $(this).each()
, потому что $(this)
возвращает объект jquery
Вот две статьи, которые могут оказаться полезными:
Что это? от Майка Альсупа
jQuery this: demystified от Remy Sharp
$(this) - текущий объект, который был выбран с помощью селектора jQuery или события, прикрепленного к объекту.
поэтому, если у вас есть $('#myelement').click(.....
, то $(this)
ссылается на элемент, на который был нажат, так что $(this).hide()
скрывает этот элемент.
в jQuery нотация $() является сокращением для селектора jQuery, поэтому, если вы скажете $(this), вы запрашиваете jQuery для повторного выбора вашего объекта. Тогда у вас есть обычные функции jQuery. "this" - это объект, выбранный внешним вызовом jQuery.