Javascript 如何从jQuery对象中的元素获取属性值数组

Javascript 如何从jQuery对象中的元素获取属性值数组,javascript,jquery,arrays,Javascript,Jquery,Arrays,我在我自己的类的元素中使用自定义属性。我试图为类的所有元素返回custom属性的值 我使用jQuery按类查找元素,jQuery将对象放置在数组中 var tabs = $('li.tab_item'); 现在,我已经在一个数组中有了对象,我想返回所有数组成员的自定义属性的值 如何做到这一点 var tab_attribs = $('li.tab_item').map(function () { return $(this).attr("custom_attribute"); }); 这

我在我自己的类的元素中使用自定义属性。我试图为类的所有元素返回custom属性的值

我使用jQuery按类查找元素,jQuery将对象放置在数组中

var tabs = $('li.tab_item');
现在,我已经在一个数组中有了对象,我想返回所有数组成员的自定义属性的值

如何做到这一点

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") );
});
无论如何,您可能应该使用HTML5提供的
data-*
属性:

<li class="tab_item" data-foo="some custom data">
使用
.map()

这将为您提供一个包装在jQuery对象中的值数组。如果要获取数组,请调用
.get()
,即
.map(…).get()

顺便说一下,您还可以按属性而不是按类选择元素:

$("[myAttribute]")
这将返回页面上具有
myAttribute
属性的所有元素。

简单解决方案(ES6)


你最好的朋友:谢谢。。。两个顶部都工作了$('li.tab_item').data(“foo”);//只返回一个entryah。。。我认为它的工作原理就像$('li.tab_item')。。返回一个数组。在jQuery文档中,它提到了“.attr()”的事实。再次感谢…@garyM jQuery中返回值的所有内容都会打破这个链条。对于获取
.text()
.html()
.attr('xyz')
等,情况就是这样。但是,如果一个方法没有返回立即值,比如设置
.attr('xyz','new value')
,它将返回以前匹配的元素,即数组。只需添加,tab_attribs.toArray()@Hatim是正确的,没有toArray(),您将得到一个jquery集合而不是数组!
 $("li.tab_item").map(function (){
    return this.getAttribute("myAttribute");
 });
$("[myAttribute]")
Array.from(document.getElementsByClassName('tab_item')).map(item => item.getAttribute('foo'));