JQuery 图像错误处理

JQuery image error handling

本文关键字:处理 错误 图像 JQuery      更新时间:2023-09-26

在我的网站上,我有一个JQuery自动完成。自动完成功能工作正常。我有来自查询的数据,以我想要的方式提取和存储。

这一切都可以在这里看到。(源代码可以查看,Enjin 让它变得丑陋,但它就在那里。

目前,返回列表的格式设置为显示图片(如果存在)和占位符(如果不存在)。

return $("<li>").append("<a>" +
        '<img class="imgThumb" onError="this.src=''http://files.enjin.com/450575/file_storage/scripts/crScripts/images/placeholder.jpg'';" src="http://census.daybreakgames.com/files/dcuo/images/character/paperdoll/' + item.desc.character_id + '" style="float:left; margin-right: 6px; max-height: 50px;width: auto;">' + '<span style="display:table-cell; vertical-align:middle; height:50px;">' + item.value + "<br>CR: " + item.desc.combat_rating + " " + item.desc.world.name + '</span>' + "</a>").appendTo(ul);
    }   

页面中心的空白点是我想放大返回列表中的图像的区域。但是,我似乎在这里遇到了障碍。加载时此点的 HTML 为:

<img id="crCharImage" src="" class="ui-state-default" alt="" />

作为自动完成的 JQuery 代码中的选择函数的一部分,我有:

$("#crCharImage").error(function() {$("#crCharImage").attr( "src", "http://files.enjin.com/450575/file_storage/scripts/crScripts/images/placeholder_large.png");}).attr("src", "http://census.daybreakgames.com/files/dcuo/images/character/paperdoll/" + ui.item.desc.character_id);

在存在图像的字符上,代码可以完美运行。图像显示,世界上一切都正确。(可以通过在"查找字符:"输入中键入 trex 来查看。在没有图像的字符上,它不是通过 onerror 函数,而是显示一个损坏的图像而不是我的占位符(如在输入框中键入 farm 所示)。请注意下拉列表中显示的徽标...这是占位符的较小版本。

我是否错误地使用了 .error?还是有另一种方法可以覆盖此问题?

编辑:根据响应,我回顾并查看了追加函数以及jQuery的内置函数。我找到了.html,并能够利用它来做我想做的事情。我不知道为什么我最初不能让它工作,但感谢那些建议再次查看它的人。

我认为您应该在onError句柄函数中使用转义字符,只需删除onError句柄函数中的"''",像这样更改第一个代码块:

return $("<li>").append("<a>" +
    '<img class="imgThumb" onerror="this.src='http://files.enjin.com/450575/file_storage/scripts/crScripts/images/placeholder.jpg';" src="http://census.daybreakgames.com/files/dcuo/images/character/paperdoll/' + item.desc.character_id + '" style="float:left; margin-right: 6px; max-height: 50px;width: auto;">' + '<span style="display:table-cell; vertical-align:middle; height:50px;">' + item.value + "<br>CR: " + item.desc.combat_rating + " " + item.desc.world.name + '</span>' + "</a>").appendTo(ul);
}  

希望这能有所帮助

顺便说一句,虽然"onError"有效,但我认为正确的关键字是错误回^_^调的"onerror"