Я пытаюсь пройти через элемент и получить все атрибуты этого элемента для их вывода, например, тег может иметь 3 или более атрибутов, которые мне неизвестны, и мне нужно получить имена и значения этих атрибутов. Я думал что-то вроде:
$(this).attr().each(function(index, element) {
var name = $(this).name;
var value = $(this).value;
//Do something with name and value...
});
Может ли кто-нибудь сказать мне, возможно ли это вообще, и если да, то какой будет правильный синтаксис?
javascript
jquery
attributes
Styphon
источник
источник
$().attr()
attributes
Коллекция содержит все возможные атрибуты в старых IE, а не только те , которые были указаны в HTML. Вы можете обойти это, отфильтровав список атрибутов с использованием каждогоspecified
свойства атрибутов ..attr()
метода jQuery . Странно, что jQuery его не включает.this[0].attributes
?attributes
не является массивом, хотя ... в Chrome, по крайней мере, это aNamedNodeMap
, который является объектом.Вот обзор множества способов, которые можно сделать, как для моей, так и для вашей справки :) Функции возвращают хэш имен атрибутов и их значений.
Ванильный JS :
Ванильный JS с Array.reduce
Работает для браузеров, поддерживающих ES 5.1 (2011). Требуется IE9 +, в IE8 не работает.
JQuery
Эта функция ожидает объект jQuery, а не элемент DOM.
Нижнее подчеркивание
Также работает для lodash.
lodash
Это даже более лаконично, чем версия Underscore, но работает только для lodash, а не для Underscore. Требуется IE9 +, в IE8 глючит. Престижность @AlJey за это .
Тестовая страница
В JS Bin есть живая тестовая страница, охватывающая все эти функции. Тест включает логические атрибуты (
hidden
) и перечислимые атрибуты (contenteditable=""
).источник
Сценарий отладки (решение jquery на основе ответа hashchange выше)
источник
с LoDash вы можете просто сделать это:
источник
Используя функцию javascript, легче получить все атрибуты элемента в NamedArrayFormat.
источник
Простое решение от Underscore.js
Например: Получить текст всех ссылок, у кого есть класс у родителей
someClass
Рабочая скрипка
источник
Мое предложение:
var a = $ (el) .attrs ();
источник