将代码应用于动态加载的图像
Apply code to dynamically loaded image
我有一个页面,其中图像与包装div通过ajax加载。我需要在图片加载时应用一些代码。我不能改变ajax调用所以我不能在ajax调用上简单地使用on('success')
。一段时间后,带有div的图像会以同样的方式重新加载(这是一种旋转)。
结构如下:
<div id="spot">
<div id="xyz">
<a href="http://someurl.com">
<img src="http://someimage.url" />
</a>
</div>
</div>
"spot"div是固定的,它里面的所有内容都是动态加载的。
输入
$('#xyz img').on('load', myCallback);
它不起作用,我想是因为当图像被重新加载时,侦听器也被删除了。
我尝试了委派的监听器:
$('#spot').on('load', '#xyz img', myCallback);
但是也没有工作,它没有被执行(我已经把console.log放在里面来验证发生了什么)。
当我输入控制台$('#spot #xyz > img')
时,控制台显示正确的对象。
我怎么能运行我的myCallback
函数后的动态内容与图像准备一些DOM脚本操作?
如果您无法访问AJAX请求回调,那么您的选项仅限于setInterval()
计时器,该计时器检查是否添加了元素,MutationObserver或img
元素上的load
事件-但请注意,这只会在图像的src
加载后触发,因此会有延迟。
MutationObserver
,但要注意这只适用于较新的浏览器:
var targetElement = document.querySelector('#container');
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
// perform the required actions here...
console.log(mutation.type);
});
});
observer.observe(targetElement, { attributes: true, childList: true, characterData: true });
不是正确的方法,但是你可以试试这个
var handle = setInterval(showImage, 500);
function showImage(e) {
var img = $('#spot').find("img");
if(img != undefined) {
if($(img).is(":visible")) {
clearInterval(handle);
handle = 0;
// your logic
}
}
}
相关文章:
- 在通过child.print()打印之前,我如何等待图像加载到我的新窗口中
- 在检索数据时是否可以停止图像加载请求
- 如何让我的网站上的WEBP图像加载在morzilla firefox中有一个可能的解决方案吗?如果是,那么如何
- jQuery:获取图像加载错误的详细信息
- 在safari和chrome中,js图像加载产生了奇怪的结果
- 图像加载不适用于 IE 8 或更低版本
- 这个图像加载功能有什么作用
- JavaScript 图像加载器不起作用
- 动态图像加载是否会减少服务器过载
- 跨来源图像加载被拒绝-仅限iPhone-简单图像上传
- 纯javascript的进度图像加载程序仅当用户单击提交html表单时
- 使用JavaScript延迟图像加载
- 如果当前图像加载缓慢,如何加载其他图像
- HTML图像加载触发一个错误
- 将图像加载到localStorage,并将图像src设置到该位置
- jquery图像加载检查错误
- 将图像加载到织物画布背景中
- 需要在bootstrap css中单击时将图像加载为模态
- 正在显示加载..在将新图像加载到网站时播放动画
- 砖石事件:在图像加载和布局完成后调用事件