3

我做了一个小提琴。http://jsfiddle.net/Zfaf6/

我正在尝试使用数组,但似乎只输出第一个对象。

有没有可以指教的,谢谢。

我的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>

http://jsfiddle.net/Zfaf6/

4

4 回答 4

5

jQueryattr()将作为“getter”(并且根据文档)返回匹配的第一个元素的值;这就是为什么你只看到一个。

要么使用 迭代匹配对象each(),要么使用map();

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

    var downloads = $('a[data-download]').map(function () {
        return $(this).attr('data-download');
    });

    // This is the example output of the data in the variable...
    $('#varObj').html(downloads.get().join(' '));
});
于 2013-02-08T11:05:20.910 回答
1

LIVE DEMO

var downloads = [] ;

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

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

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

});
于 2013-02-08T11:06:29.383 回答
1

调用 set 的 attr() 只会返回第一个 attr()。此外,使用data()它更容易阅读。

因此,代码只是创建了一个空数组,然后使用each我们将每个项目的download值推送到数组中。您的其余代码是相同的。

$("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);
});
于 2013-02-08T11:07:23.703 回答
1
var downloads = $('a[data-download]').map(function(){   
   return  $(this).data('download');        
});
$("#varObj").html(downloads.join("-"));
于 2013-02-08T11:08:41.597 回答