我正在建立一个页面,我想在其中使用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/