使用 jQuery 从元素列表创建特定属性的数组

Create array of certain attribute from a list of elements using jQuery

假设我有一些 div。

<div data-id="1"></div>
<div data-id="2"></div>
<div data-id="3"></div>
<div data-id="4"></div>

有没有办法在不使用 .each 的情况下获取 data-id 属性数组:["1", "2", "3", "4"]

你可以使用 .map(): (example here)

var array = $('div[data-id]').map(function(){
    return $(this).data('id');
}).get();

console.log(array);

或者,使用纯 JS:(example here)

var elements = document.querySelectorAll('div[data-id]'),
    array = [];

Array.prototype.forEach.call(elements, function(el){
    array.push(parseInt(el.dataset.id, 10));
});

console.log(array);

...或使用常规 for 循环:(example here)

var elements = document.querySelectorAll('div[data-id]'),
    array = [],
    i;

for (i = 0; i < elements.length; i += 1) {
    array.push(parseInt(elements[i].dataset.id, 10));
}

console.log(array);

您甚至可以使用 for 循环而不使用 JQuery,以防您正在寻找更原始的解决方案,例如:

var nodes = document.querySelectorAll('[data-id]');
for(var i=0;i<nodes.length;i++){
   // do something here with nodes[i]
} 

或者直接从查询结果中获取数组,您也可以使用 Array.prototype.map.call:

var values = Array.prototype.map.call(nodes, function(e){ return e.dataset.id; });

var array=$('div[data-id]');//array 将按照出现在您的 DOM.

中的顺序存储所有包含 data-id 的 div

所以假设你想获得第二名 div 就这样做 array[1].attr('id')