2011-04-16 40 views
1

我是一個jQuery的小白,我不知道如何解決這個問題:jQuery的準備()和腳本序列

  1. 我有一個外部的.js腳本,讓我們reflection.js爲例。
  2. Reflection.js爲每個class =「reflect」圖像創建畫布反射。
  3. 我通過不同的JS腳本追加了幾張圖片,這些腳本在('document')。準備好時開始。
  4. 當然,reflection.js不適用於上述腳本創建的圖像。

如何避免這種情況?

我想我需要回調(?)。不幸的是,即使在閱讀文檔之後,我仍然沒有想到回調的想法。

[編輯]

<script src="js/reflection.js" type="text/javascript"></script> 
<script type="text/javascript"> 

      jQuery().ready(function() { 
      jQuery('#thumbs li').each(function(){ 
        jQuery('.'+id+' a').append('<img src="' + imgURL + '" class="reflect" /></a>'); 
       }); 
      }); 
</script> 
+0

你的JavaScript都在onDomReady上執行......只需重新排序它們:首先將圖像添加到DOM,然後執行jqeury反射插件。 – Rudie 2011-04-16 22:44:51

回答

3

圖像加載事件不冒泡。你不能掛鉤到那些。

由於您的圖片具有「反映」類,這意味着您可以對源進行一些控制。所以我建議你的反射代碼發佈一個API供你打電話。

window.Reflect = function(img) { 
    ... 
}; 
... 
var img = $("<img></img"); 
img.attr({ 
    ... 
}); 
Reflect(img); 
... 

如果你不想這樣做,那麼你可以輪詢文件的新圖像。

(function poll() { 
    var images = $("img.reflect"); 
    ... 
    images.removeClass("reflect") 
    setTimeout(poll, 500); 
})(); 
+1

我認爲你的意思是「img」而不是「image」:-) – Pointy 2011-04-16 22:22:02

+1

@煩人的''標籤。爲什麼不能HTML拼寫! – Raynos 2011-04-16 22:24:36

+1

我不認爲圖像的負載事件冒泡。看到我的答案從一個較舊的[問題](http://stackoverflow.com/questions/3043635/live-keyword-not-working-on-load-with-dynamic-html-images/3044115#3044115)。 – Anurag 2011-04-16 22:25:55

0

如果我正確理解這一點,那麼在「就緒」序列下有兩個函數,一個腳本依賴於其他函數。

我如何解決這個問題,我已經構建了自己的includeJS以及jQuery所具有的其他就緒檢查層。

https://github.com/atk4/atk4/blob/master/templates/js/start-atk4.js

所以我的代碼如下所示:

$(function(){ 
    $.atk4.includeJS('reflection.js'); 
    $.atk4.includeJS('different.js'); 
    $.atk4(function(){ 
     $('.reflect').reflection(); 
    }); 
}); 

會發生什麼事是,後文件已準備就緒,jQuery的推出上面的代碼。它附加了2個腳本並對它們進行評估(通過添加標籤)。評估完成後,函數atk4.get將執行準備鏈,與jQuery的做法非常相似。

+0

可能有一些圖書館採用類似的方法,但是如果沒有,可以隨意借用它。 :) – romaninsh 2011-04-16 23:03:56

+0

爲什麼敏捷工具包_four_? – Raynos 2011-04-16 23:55:55