Uncaught TypeError: Object # <HTMLDivElement> не имеет метода 'attr'
Im пытается захватить мои divs с помощью всплывающей подсказки класса.
И затем сделайте что-то вроде этого:
var schemes = $(".tooltip");
for (var i in schemes) {
var scheme = schemes[i];
console.log(scheme.attr("cost"));
}
Но он выдает указанную выше ошибку. Что мне не хватает? (Я, очевидно, новый для javascript + jquery)
Ответы
Ответ 1
Если вы используете for-loop
для итерации набора jQuery, вы должны получить элементы с помощью метода eq()
, но не используя квадратную нотацию (т.е. []
). Код типа $(".tooltip")[i]
будет собирать элементы DOM, но не объекты jQuery.
var schemes = $(".tooltip");
for (var i = 0; i < schemes.length; i++) {
var scheme = schemes.eq(i);
console.log(scheme.attr("cost"));
}
Однако вы всегда можете использовать each()
для итерации набора jQuery:
$(".tooltip").each(function() {
var scheme = $(this);
console.log(scheme.attr("cost"));
});
Ответ 2
var schemes = $(".tooltip");
schemes.each(function(index, elem) {
console.log($(elem).attr('cost'));
});
В качестве побочного значения "стоимость" не является допустимым атрибутом для любого элемента, насколько я знаю, и вы, вероятно, должны использовать атрибуты данных.