javascript - 在动态创建的 img 元素上设置 img src
问题描述
我有一个通过 Ajax 调用动态创建的缩略图元素。ID 和 url 也是动态的。
<img class="tn" id="'+id+'" src="'+d.aUrl+'" />
我想做的就是检测加载错误并提供不同的图像。
策略一
检测加载错误并设置源
$(document).on('error', '.tn', function(e){
$(e.currentTarget.id).attr('src', 'alt_pic.jpg');
});
这里的问题是未检测到错误事件。当我将 'error' 替换为 'mouseover' 时,我可以看到为正确的 id 检测到了正确的事件。
策略二
从图像标签中检测错误事件,然后触发函数进行处理。
<img class="tn" id="'+id+'" src="'+d.aUrl+'" onerror="replace_image(this)" />
function replace_image(t){
$(t.id).attr("src", "alt_pic.jpg");
});
错误寄存器和函数使用 id 调用。这不起作用,因为图像标签是动态创建的,并且在 dom 中不可用。
任何想法如何定位图像标签?谢谢!!
解决方案
问题是$(t.id)
评估到$('tn')
你想要的地方是$('#tn')
或$(obj)
。将您的代码修改为以下任一变体:
// replace with alt image
function replace_image(t){
$(t).attr("src", "https://i.stack.imgur.com/ffjPe.png");
// $('#' + t.id) will also work
};
// dynamically insert image
$('div').html('<img id="tn" src="test.jpg" onerror="replace_image(this)" />');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
推荐阅读
- amazon-s3 - HTTP 请求已发送,等待响应... 403 Forbidden
- javascript - 我应该如何在 axios GET 请求中发送 JWT 令牌?
- linux - Powershell POST 到 Linux curl
- html - 引导卡作为显示数据的按钮
- ansible - Ansible:在循环中合并stdout_results dict项目的元素
- r - LSTM 理解,可能的过拟合
- jupyter-notebook - 在 Google Colab 上安装 jupyter-contrib-nbextension
- arm - 仅当另一个进程正在运行时,从我系统中的 UART 设备传输到 CPU 的保持活动消息不会偶尔到达
- php - 隐藏或显示特定自定义分类类别中的 div
- tensorflow - keras.callbacks.Tensorboard 在 Tensorflow 急切执行中不起作用