0

我正在尝试根据系统上是否存在与数据库条目相对应并以 id 作为其名称的一部分标识的图像来加载两个不同的缩略图图像之一。

为了清楚起见,如果存在名为 {id}-thumb.png 的特定图像,那么我想使用 jQuery 将其名称加载到 HTML 的 src 中。如果图像不存在,我想加载一个名为 thumbnail.png 的通用缩略图图像。

这是我到目前为止所拥有的:

var image_path = id + "-thumb.png";
$.ajax({
    url: image_path,
    type: "HEAD",
    error: function() {
        $("li#" + id + " .thumbnail").attr("src","thumbnail.png");
    },
    success: function() {
        $("li#" + id + " .thumbnail").attr("src",id + "-thumb.png");
    }
});

然后我通过构建一个字符串变量 list_item 来生成要插入的新 HTML

var list_item = "<li id='" + id + "'>";
list_item += "<figure>";
list_item += "<img class='thumbnail' src=''></a>";
list_item += "</figure>";

最后,我将这个新的 list_item 变量添加到现有的 ul 中:

$(".list ul").prepend(list_item);

但是我没有得到任何图像并且查看生成的 HTML,src 是空的。

任何想法都非常感谢!

4

2 回答 2

5

如果图像不存在,您可以使用“onerror”参数。像这样生成图像标签:

<img src="something.jpg" onerror="this.src='something_else.jpg'" />
于 2013-05-24T11:06:07.233 回答
0

默认加载通用拇指,然后加载特定的拇指 - 如果它不存在,它将不会被加载:

<img src="path/to/generic_thumb.png" data-src="path/to/specific_thumb.png" alt="">

JS

$('img[data-src]').each(function(){

    var $self = $(this), specificSrc = $self.data('data-src');

    // create an img node, inject the real src attribute...
    $("<img />").bind("load", function() {

      // ...when it gets loaded [and the resource is thus available],
      // set it to the actual DOM img element.
      $self.attr('src', specificSrc);

    }).attr("src", specificSrc);

});
于 2013-05-24T11:22:43.537 回答