微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-将代码应用于动态加载的图像

我有一个页面,其中带有环绕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’)时,控制台会显示正确的对象.

在图像的动态内容准备好执行某些DOM脚本操作之后,如何立即运行myCallback函数

解决方法:

如果您无法访问AJAX请求回调,则您的选项将限于setInterval()计时器,该计时器检查是否已添加元素,MutationObserver或img元素上的加载事件-但请注意,这会仅在图片的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 });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐