Я не могу понять, почему я не могу выбрать атрибут в jquery

У меня есть теги ввода, как это:

(У меня около 3 одинаковых тегов ввода на моей странице)

Я хочу получить последнее значение атрибута: "true" из самого последнего атрибута в моем теге ввода. Я пробовал этот jquery, но я продолжаю получать значение undefined:

$('input').attr('data-singlespace')

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

3 ответа

Метод .attr() возвращает указанный атрибут из первого элемента в объекте jQuery. В вашем случае объект jQuery $('input') выбирает каждый элемент ввода на странице, поэтому вы пытаетесь получить этот атрибут с первого ввода, где (предположительно) атрибут не определен.

Измените свой селектор, чтобы получить правильный элемент.


Лучше использовать метод .data() для доступа к пользовательским атрибутам

$('input').data('singlespace')

Проблема также может быть связана с несколькими входами.

Поместите код внутри $.each

$('input').each(function() {
 console.log($(this).data('singlespace'));
});

Или используйте eq для задания определенного входа на основе индекса, поскольку селектор слишком специфичен.

$('input').eq(1).data('singlespace') ;
// Gets the 2nd input


вы также можете попробовать следующее:

$('input[data-singlespace]').data('singlespace');

licensed under cc by-sa 3.0 with attribution.