JQuery: TypeError: Объект 0 не имеет метода attr - PullRequest
2 голосов
/ 01 апреля 2011

Это код, который я пытаюсь запустить, чтобы "выбрать" атрибут href всех элементов .insite моей страницы:

$('.insite').each(function(a) {
    a.attr('href');
});

К сожалению, это не удается и возвращает мне следующую ошибку:

Объект 0 не имеет метода attr

Что-то не так в том, что я сделал?

Ответы [ 4 ]

12 голосов
/ 01 апреля 2011

Обратный вызов, переданный .each() , принимает параметры (index, Element), но вы забыли индекс. Попробуйте:

$('.insite').each(function(i, a) {
    alert(a.attr('href'));
});

или просто:

$('.insite').each(function() {
    alert($(this).attr('href'));
});
2 голосов
/ 01 апреля 2011

попробуйте

$('.insite').each(function(i) {
    $(this).attr('href');
    // i is the current number of the element in collection
});
2 голосов
/ 01 апреля 2011

Вместо использования «а» используйте «this»

, например

$('.insite').each(function(){
     $(this).attr('href');
});
0 голосов
/ 01 апреля 2011

Ваша переменная с именем "a" - это просто итерационная переменная, поэтому вы не можете просто ввести a.attr.

Если вы действительно хотите использовать «а», вы должны сделать что-то вроде этого:

$('.insite').each(function(a) {
var obj = $('.insite')[a];
alert($(obj).attr("href"));
});

но я думаю, что-то вроде этого действительно лучше:

$('.insite').each(function() {
$(this).attr("href");
});
...