0

これにより、オブジェクト オブジェクトが返されます。src の配列を作成するにはどうすればよいですか?

$('#mainContainerPortfolio #activateBox').click(function(){

    var clickedAlt = $(this).children('img').attr('alt');
    var imgs = $('#mainContainerPortfolio #projectImg[alt="'+clickedAlt+'"]');
    imgs.src;
    var i = [];
    i.push(imgs);

    console.log(i);
});
4

3 に答える 3

3

あなたのコードでimgsは、DOM 要素ではなく、jQuery オブジェクトです。.srcそのため、プロパティ はありません。

.srcその jQuery オブジェクトで画像のプロパティが必要な場合は、次のいずれかを実行する必要があります。

var src = imgs.attr("src");

または、jQuery オブジェクトから最初の DOM 要素を取得します。

var src = imgs[0].src

また、コードには他にもいくつかのエラーがあります。srcクリックされたすべての要素の値を配列に蓄積したい場合は、次のようにすることができます。

$('#mainContainerPortfolio #activateBox').click(function(){

    var clickedAlt = $(this).children('img').attr('alt');
    var imgs = $('#mainContainerPortfolio #projectImg[alt="'+clickedAlt+'"]');
    var srcs = imgs.map(function(index, elem) {
        return(elem.src);
    }).get();

    console.log(srcs);
});

セレクターにも問題があると思います.1つの要素しか持つことができid="projectImg"ないため、属性 [alt="'+clickedAlt+'"] を使用する理由はないはずです。

同様に、の ID を持つオブジェクトは 1 つしか存在できないため、'#mainContainerPortfolio #activateBox'を に変更できます。'#activateBox'activateBox

于 2012-08-12T08:45:38.723 に答える
1

imgs オブジェだから。この行:

imgs.src;

まったく何もしません。それを返すだけです。戻り値は何も処理されません。それを次のように変更します。

imgs = imgs.attr("src");

そしてそれはうまくいくはずです

于 2012-08-12T08:45:42.970 に答える
1

.map を使用して配列を取得できます。

i = imgs.map(function() {
  return $(this).attr('src');
});
于 2012-08-12T08:49:00.000 に答える