Как получить массив значения атрибута из элементов в объекте jQuery

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

Я использовал jQuery для поиска элементов по классам, а jQuery помещает объект в массив.

var tabs = $('li.tab_item');

Теперь, когда у меня будут объекты в массиве, я хотел бы вернуть значение для настраиваемого атрибута для всех членов массива.

Как это можно сделать?

2 ответа

var tab_attribs = $('li.tab_item').map(function () {
 return $(this).attr("custom_attribute");
});

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

var tab_attribs = [];
$('li.tab_item').each(function () {
 tab_attribs.push( $(this).attr("custom_attribute") );
});

В любом случае вам, вероятно, следует использовать атрибуты data-*, которые предоставляет HTML5:

<li data-foo="some custom data">
<p>и (см. <a href="http://api.jquery.com/jQuery.data/" rel="nofollow noreferrer" target="_blank">jQuery <code>data()</code></a>):</p>
<pre class="prettyprint linenums">$('li.tab_item').data("foo"); // -> "some custom data"


Используйте .map():

$("li.tab_item").map(function (){
 return this.getAttribute("myAttribute");
 });

Это дает вам массив значений, завернутый в объект jQuery. Если вы хотите получить массив, вызовите .get(), т.е. .map(...).get().

Кстати, вы также можете выбрать элементы по атрибуту вместо класса:

$("[myAttribute]")

Это вернет все элементы на странице с атрибутом myAttribute.

licensed under cc by-sa 3.0 with attribution.