2013-05-03 95 views
0

我有一個函數,我創建的窗口加載最初運行一些處理圖像(高度寬度等) - 爲了這個問題,我會調用該函數「run_imgprocess( )」jquery檢查加載後是否加載圖像

我的問題:

追加數據時與點擊功能的頁面(或阿賈克斯等)我需要調用‘一旦被載入run_imgprocess()’函數的圖像,但這是棘手的部分。

沒有使用類似「imagesloaded」的插件,我有什麼選擇?

我的最後一次嘗試是這樣的:

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

然而,一旦你在點擊追加使用除少數大型圖片更多,這是不可靠的。

預先感謝您!

編輯:

新增小提琴 - http://jsfiddle.net/aECag/1/

IMPOTANT:當您緩存的圖片,將正確呈現上重新運行。您必須完全清除瀏覽器緩存,然後嘗試。

+0

你見過一個/每個方法:http://stackoverflow.com/a/2392448/1414562 – 2013-05-03 13:51:32

+0

我確實給過這個嘗試,但是我沒有任何運氣。 – remixdesign 2013-05-03 14:00:03

回答

0

沒有完整的代碼,我無法真正測試或爲您設置jsfiddle。也許試試這個如下:

$('.appendedclass img').each(function() { 
    $(this).load(function() { 
     run_imgprocess(); 
    }); 
}); 
+0

剛剛給了這個嘗試,但它仍然有問題與函數調用時未加載。 – remixdesign 2013-05-03 14:01:00

+2

我建議創建一個jsfiddle,以便我們可以看到發生了什麼 – 2013-05-03 14:03:11

+0

添加了一個小提琴! – remixdesign 2013-05-03 14:43:44

0

您可能要下降到了JS原生的onload:

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

我想在你的jsfiddle,它似乎工作得很好。

原因是jQuery的load()函數更加適合加載HTML,而圖像的onload事件在圖像完全下載之前不會觸發。

0

我有同樣的問題。在我的情況下,我的代碼附加到一個數組包含一些圖像。所以基本上圖像的數量等於Array.lenght。因此,適用於你的情況可能是:

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

其中imagesLinks是我的數組包含我的圖片