0

我创建了一个函数,该函数最初在窗口加载时运行,以对图像进行一些处理(高度宽度等)-为了这个问题,我将调用该函数“run_imgprocess()”

我的问题:

当使用单击功能(或 ajax 等)将数据附加到页面时,我需要在图像加载后调用“run_imgprocess()”函数,但这是棘手的部分。

如果不使用“imagesloaded”插件之类的东西,我有什么选择?

我最后一次尝试是这样的:

$(".appendedclass img").load(function(){
    run_imgprocess();
});

但是,一旦您在单击附加中使用了多个大图像,这就不可靠了。

先感谢您!

编辑 :

添加小提琴 - http://jsfiddle.net/aECag/1/

重要:当您缓存图像时,它们将在重新运行时正确呈现。您必须完全清除浏览器缓存,然后再尝试。

4

3 回答 3

0

如果没有完整的代码,我无法真正为您测试或设置 jsfiddle。也许在下面试试这个:

$('.appendedclass img').each(function() {
    $(this).load(function() {
      run_imgprocess();
    });
 });
于 2013-05-03T13:53:52.500 回答
0

您可能想要下拉到 js 原生 onload:

$(".hhImageBox:not(.processed) img").each(function(){
    this.onload = function() {
        run_imgprocess();
    }
});

我在你的 jsfiddle 上试过了,它似乎工作得很好。

原因是 jQuery load() 函数更适合加载 HTML,而图像的 onload 事件在图像完全下载之前不会触发。

于 2013-05-03T23:31:54.113 回答
0

我有同样的问题。就我而言,我的代码将一些包含在数组中的图像附加到 div。所以基本上图像的数量等于 Array.lenght。因此,应用于您的案例可能是:

var imagesLoaded = 0;
$(".appendedclass img").load(function(){
    imagesLoaded++;
    if (imagesLoaded == imagesLinks.length) {
        run_imgprocess();
    }
}); 

其中 imagesLinks 是包含我的图像的数组

于 2014-04-26T13:51:33.420 回答