-1

DOMに読み込まれるページで多くの画像を使用します。

html += '<img src="'+image.preview+'" title="View larger image" alt="'+image.item_title+'" height="'+image.display_height+'" width="'+image.display_width+'">';

データはajax呼び出しから取得され、画像ごとに1つずつFORループ内にあります。1つが壊れている場合に備えて2つの画像参照がimage.previewありimage.preview2ます(image.previewはローカルであるため、2つを使用しますが、エラーの場合はimage.preview2が元の画像です)

壊れている場合image.previewは切り替えたいimage.preview2

私は次のことを試していますが、どこに配置するのかわかりませんか?

$('img').on('error', function() { this.src = image.preview2; });

私は前html +=、後、途中で試しましたが、何もうまくいかないようです-何かアイデアはありますか?

4

4 に答える 4

1

preview2画像ソースが異なる画像ごとにある場合は、次のforようにループ内で実行することをお勧めします。

for(n in images) {
    var image = images[n];

    // create jQuery object (is not in the DOM jet)
    $img = $('<img title="View larger image" alt="' + image.item_title + '" height="' + image.display_height + '" width="' + image.display_width + '">');

    // is there an preview src?
    if(typeof image.preview == 'Undefined' || image.preview == '') { //nopes
        $img.attr('src', image.preview2);
    } else { //yes
        $img.attr('src', image.preview);
    }

    // add the image to the DOM
    $('#id_of_element').append($img);
}
于 2013-02-22T08:51:20.727 に答える
0

できるよ:

var newImg = $('<img src="'+image.preview+'" title="View larger image" alt="'+image.item_title+'" height="'+image.display_height+'" width="'+image.display_width+'">');
newImg.on('error', function() { this.src = image.preview2; }); 

and then

<the html container>.append(newImg);

これにより、画像がDOMに追加されてフェッチされる前に、画像にすべての設定が設定されていることを確認できます。

于 2013-02-22T08:50:13.497 に答える
0

例:

function setDefaultImage(img)
{
  img.src = "images/candidates/human.jpg";
}

これがお役に立てば幸いです。

あなたのシナリオで..

html += '<img src="'+image.preview+'" title="View larger image" alt="'+image.item_title+'" height="'+image.display_height+'" width="'+image.display_width+'" onerror="'setDefaultImage(this)'">';

 function setDefaultImage(img)
    {
      img.src = "image.preview2";
    }
于 2013-02-22T08:51:37.730 に答える
-2

それを行うのが最も簡単な方法はインラインです。

html += '<img src....onerror="this.onerror=null;this.src=\''+image.preview2+'\';">';
于 2013-02-22T10:45:30.377 に答える