我正在建立一个页面,我想在其中使用Galleria脚本(http://devkick.com/lab/galleria/)和jQuery的Accordion小部件来隐藏不同类别的画廊缩略图。在初始化时,我按照两个脚本手册的建议进行了编写:

<script type="text/javascript">
        jQuery(function($) {
        $('ul.gallery').galleria({
         insert: "#image"
        });

         $("#thumbs").accordion();

        });
</script>


galleria()功能创建缩略图并为其分配适当的尺寸。然后,accordion()函数分配其样式并折叠当前不可见的元素。上面的代码给我带来了一个问题,即由于尺寸为零,一些缩略图变得不可见。

如果在galleria()函数中为缩略图分配大小之前放了警报,我可以看到对于在手风琴的不可见页面内的图像,其容器在那时的尺寸为零。这对我来说很奇怪,因为我认为这些功能是连续执行的,并且在accordion()完成之前不会调用galleria()

更奇怪的是,如果我在手风琴功能之前放了一个警报,那么所有内容都会以正确的顺序处理。

很明显,我在这里面临比赛条件。为什么会发生这种情况,我应该怎么做才能保证有序的初始化顺序?

最佳答案

这只是一个猜测,但我想这与下载图像之前运行的脚本有关。这似乎可以解释为什么手风琴功能之前的alert()使事情起作用。它使图像有机会加载。

如果这是正确的,那么您将要使用jQuery的load()事件处理程序来确保图像已完全加载。

用于load()的文档:http://api.jquery.com/load-event/

10-07 14:00
查看更多