2017-04-09 1 views
0

オンクリック機能では、APIのアルバム画像が表示されます。アルバムの画像をクリックすると、画像にオーバーレイがあります。APIのIDを変数に格納する方法は、オンクリックで情報を見つけるために使用できますか?

アルバムに関する他の情報をオーバーレイに添付しようとしています。 1つの特定のアルバムからの情報だけが表示されるように、変数にアルバムIDを格納することは可能ですか?この関数内のすべてのIDを変数として取得できますが、個々の変数として各変数を格納する方法を、オンクリック関数で使用する方法を考えることはできません。どんな提案も感謝しています。

 function displayAlbums(data) { 

        var html = '<ul>'; 
        $.each(data.tracks, function(i, eachAlbum) { 
        html += '<li class="albumImage">'; 
        html += '<img src="' + eachAlbum.album.images[0].url + 
        '">'; 
        html += '</li>'; 

        var id = eachAlbum.album.id; 
         console.log(id); // all albums id's are showing 
         in console 

        }); // closes each 
        html += '</ul>'; 

         $("#albumImages").html(html); 

        } //closes displayAlbums function 

答えて

1

Storeは、各<img>または<li>

html += '<img data-album_id="' +eachAlbum.album.id +'" src="' + eachAlbum.album.images[0].url + '">'; 

上のデータ属性として次にクリックハンドラを使用すると、データとしてのIDを追加することができ

$("#albumImages").on('click', '.albumImage img', function(){ 
    console.log('album id=', $(this).data('album_id')); 
}) 
0

要素自体から直接アクセスすることができます-id属性であるため、次のようになります。

html += '<img src="' + eachAlbum.album.images[0].url + '" data-id="' + eachAlbum.album.id + '">'; 
1

あなたの$.each内で理にかなっている方、imgまたはlidata-id属性を使用してこのように、onclickリスナーでそれらにアクセスすることができます。ここで使用されるように、using data attributes(MDN)template literals

より上

function displayAlbums(data) { 

    var html = '<ul>'; 
    $.each(data.tracks, function(i, eachAlbum) { 
     html += '<li class="albumImage">'; 
     html += `<img src="${eachAlbum.album.images[0].url}" data-id="${eachAlbum.album.id}">`; 
     html += '</li>'; 

     var id = eachAlbum.album.id; 
     console.log(id); // all albums id's are showing in console 

    }); // closes each 
    html += '</ul>'; 

    $("#albumImages").html(html); 

} 

詳細

html += `<img src="${.....` 
+0

これは役に立ちます。ありがとうございました。私はそれぞれのアルバムにIDを識別させるようにしていますが、私はアルバムIDを他の情報に結びつけるのに苦労しています。ギャラリーの画像をクリックすると、そのアルバムのタイトルが表示されます。画像クリックでタイトルにアクセスするために何らかの方法で$を使うことができますか? –

+1

もしそれがちょうどあなたが望むタイトルであれば、それも 'data-title'属性に入れてください。その "情報"がタイトルよりもはるかに多い場合(例:コメント、好きなものなど)、 'data-id'を通してアルバムIDを取得していると仮定すると、そのオブジェクトにフックをつけます。 album = data.tracks.find(album => id === album.album.id) ' –

+0

ありがとうございました。 –

関連する問題