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

jQueryのattr()意志は、「ゲッター」として(そしてドキュメントごとに)、一致した最初の要素の値を返します。これが、1つしか表示されない理由です。

を使用して一致オブジェクトを反復処理するか、 ;を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

セットの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 に答える