В чем разница между $ (этим) и этим - PullRequest
6 голосов
/ 16 сентября 2010

У меня есть следующий код

$('a').click(function() {
var url= this.href;
alert(url);
});

Это работает просто отлично и достаточно точно, что возвращаемый результат является URL-адресом тега.

Однако, если я изменю код выше на

$('a').click(function() {
var url= $(this).href;
alert(url);
});

Результат не определен.

Кто-нибудь, пожалуйста, помогите мне это выяснить?Я бьюсь головой об этом ....

Ответы [ 5 ]

19 голосов
/ 16 сентября 2010

$(this) создает объект jQuery, который упаковывает this.Собственный объект DOM имеет атрибут href, но jQuery - нет.

$(this).attr("href") будет работать.

7 голосов
/ 16 сентября 2010

this в вашем случае является фактическим элементом dom, поэтому якорный тег

$(this) является объектом jquery, который обертывает этот элемент dom со всеми достоинствами jquery.

.href не является атрибутом этого объекта jquery, но относится к объекту dom.

Вы можете использовать $(this).attr('href') для достижения того же результата с помощью объекта jQuery.

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

Это потому, что вы используете JOME-элемент JavaScript в первом примере и объект jQuery во втором примере.Объект jQuery оборачивается вокруг элемента DOME и предоставляет вам множество функций.

Вы можете получить доступ к URL следующим образом:

$('a').click(function() { var url= $(this).attr('href'); alert(url); });
0 голосов
/ 01 октября 2011

Множество хороших ответов, просто хочу добавить, что вы тоже можете сделать это:

$('a').click(function(e) {
    alert($(this)[0].href);
});
0 голосов
/ 16 сентября 2010

Разница между элементом DOM и выбором jQuery.

"this" в приведенном выше коде является ссылкой на элемент DOM ссылки.$ (this) создает выбор jQuery на основе элемента DOM, который содержит только эту ссылку.

Выбор jQuery предоставит вам различные функции за счет небольшой производительности.У вашего элемента ссылки есть свойство href (то есть то, к которому вы можете получить доступ через this.href), тогда как у выбора jQuery есть все обычные свойства и методы jQuery.

Для получения цели ссылки, this.href определенно являетсяидти.Это проще, быстрее и менее многословно.

...