You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何替换加载失败的图片?编写jQuery代码后未生效求助

图片加载失败替换失效的排查与解决

以下是几种可能导致你的代码不生效的原因及对应解决办法:

  • 动态元素未使用事件委托
    如果.item是页面加载后动态生成的(比如通过AJAX、模板渲染添加),直接给.item绑定error事件只会作用于已存在的元素。改用事件委托绑定到父级或document:

    $(document).on('error', '.item', function(){
        $(this).attr('src', 'ph/vposter.jpg');
    });
    
  • 事件绑定时机过晚
    若图片在你的代码执行前就已经加载失败,error事件已经触发完毕,后续绑定不会生效。需要主动检查已加载的图片状态:

    $(function(){
        $('.item').each(function(){
            const $img = $(this);
            // 检查图片是否加载失败
            if (!$img[0].complete || $img[0].naturalWidth === 0) {
                $img.attr('src', 'ph/vposter.jpg');
            }
        });
        // 同时绑定error事件处理后续加载的图片
        $('.item').on('error', function(){
            $(this).attr('src', 'ph/vposter.jpg');
        });
    });
    
  • 替换图片路径错误
    确认ph/vposter.jpg的相对路径是否正确(相对于当前页面URL,而非JS文件路径)。可以在浏览器控制台输入new URL('ph/vposter.jpg', window.location.href)查看实际请求地址,若返回404则调整路径。

  • 绑定目标元素错误
    检查.item是否是<img>元素。如果.item是图片的容器,需要将事件绑定到容器内的图片,比如.item img:

    $('.item img').on('error', function(){
        $(this).attr('src', 'ph/vposter.jpg');
    });
    

内容的提问来源于stack exchange,提问作者provance

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:39:54