jQuery ready()和脚本序列

时间:2011-04-16 22:17:14

标签: javascript jquery sequence

我是一个jQuery noob,我想知道如何解决这个问题:

  1. 我有一个外部.js脚本,让我们以reflection.js为例。
  2. Reflection.js为每个class =“reflect”图像创建画布反射。
  3. 我通过不同的JS脚本添加一些图像,这些脚本从('document')开始。准备就绪。
  4. 当然,reflection.js不适用于上面脚本创建的图像。
  5. 如何避免?

    我想我需要回调(?)。不幸的是,即使在阅读文档后我也没有想到回调的想法。

    [编辑]

    <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> 
    

2 个答案:

答案 0 :(得分: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 :(得分: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一样的就绪链。