Jquery 通过捕获数据属性创建对象数组

Jquery 通过捕获数据属性创建对象数组,jquery,arrays,collections,Jquery,Arrays,Collections,我做了一把小提琴 我正在体验数组,但似乎只输出第一个对象 请给我一些建议,谢谢 我的jquery $("a.download-all").on('click', function () { var downloads = $('a[data-download]').attr('data-download'); // This is the example output of the data in the variable... $('#varObj').html(

我做了一把小提琴

我正在体验数组,但似乎只输出第一个对象

请给我一些建议,谢谢

我的jquery

$("a.download-all").on('click', function () {

    var downloads = $('a[data-download]').attr('data-download');

    // This is the example output of the data in the variable...

    $('#varObj').html(downloads);

});

我的脚本

<div id="images">

    <a href="#" data-download="http://image.com/1.jpg"><img src="images/x.gif" alt=""/></a>
    <a href="#" data-download="http://image.com/2.jpg"><img src="images/x.gif" alt="" /></a>
    <a href="#" data-download="http://image.com/3.jpg"><img src="images/x.gif" alt=""/></a>
    <a href="#" data-download="http://image.com/4.jpg"><img src="images/x.gif" alt="" /></a>
    <a href="#" data-download="http://image.com/5.jpg"><img src="images/x.gif" alt=""/></a>
    <a href="#" data-download="http://image.com/6.jpg"><img src="images/x.gif" alt="" /></a>

<div>

<p><a href="#" class="download-all">Download all images</a></p>

<p id="varObj"></p>

jQuery的
attr()
将作为“getter”()返回匹配的第一个元素的值;这就是为什么你只看到一个

使用迭代匹配对象,或使用

调用集合的attr()将只返回第一个attr()。另外,使用
data()
,因为它更易于阅读

因此,代码只是创建一个空数组,然后使用
each
将每个项目的
下载
值推送到数组中。代码的其余部分是相同的

$("a.download-all").on('click', function () 
{
    var downloads = [];

    $('a[data-download]').each(function()
    {
        downloads.push( $(this).data('download') );
    });

    // This is the example output of the data in the variable...

    $('#varObj').html(downloads);
});

我认为map()非常适合这种情况。干得好!真不敢相信我没想到地图。也谢谢。还有关于数据的提示,永远忘了这一点。还有更新我的标题:-)你把我最喜欢的答案剪得更细了!虽然这有点奇怪-不工作的原因。。。打字错误:
download'))
extra括号
var downloads = [] ;

$("a.download-all").on('click', function () {

    $('a[data-download]').each(function(){   
        downloads.push( $(this).attr('data-download') );        
    });

    $('#varObj').html(downloads);

});
$("a.download-all").on('click', function () 
{
    var downloads = [];

    $('a[data-download]').each(function()
    {
        downloads.push( $(this).data('download') );
    });

    // This is the example output of the data in the variable...

    $('#varObj').html(downloads);
});
var downloads = $('a[data-download]').map(function(){   
   return  $(this).data('download');        
});
$("#varObj").html(downloads.join("-"));