Подтвердить что ты не робот

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)

4b9b3361

Ответ 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'));
});

В качестве побочного значения "стоимость" не является допустимым атрибутом для любого элемента, насколько я знаю, и вы, вероятно, должны использовать атрибуты данных.