jQuery初始化顺序
我正在构建一个页面,我想使用Galleria script()和的手风琴小部件隐藏不同类别的画廊缩略图。在初始化过程中,我按照两个脚本手册的建议编写了:jQuery初始化顺序,jquery,jquery-ui,jquery-ui-accordion,galleria,Jquery,Jquery Ui,Jquery Ui Accordion,Galleria,我正在构建一个页面,我想使用Galleria script()和的手风琴小部件隐藏不同类别的画廊缩略图。在初始化过程中,我按照两个脚本手册的建议编写了: <script type="text/javascript"> jQuery(function($) { $('ul.gallery').galleria({ insert: "#image" }); $("#thumbs").accordion
<script type="text/javascript">
jQuery(function($) {
$('ul.gallery').galleria({
insert: "#image"
});
$("#thumbs").accordion();
});
</script>
jQuery(函数($){
$('ul.gallery')。凯丹广场({
插入:“图像”
});
$(“拇指”)。手风琴();
});
galleria()
函数创建缩略图并为其指定适当的大小。然后,accordion()
函数指定其样式并折叠当前不可见的元素。在上面的代码中,由于零维,我遇到了一些缩略图不可见的问题
如果我在galleria()
函数中为缩略图指定大小之前放置警报,我可以看到,对于accordion不可见页面中的图像,其容器在该点上的尺寸为零。这对我来说非常奇怪,因为我认为这些函数是连续执行的,并且在galleria()
完成之前不会调用accordion()
更奇怪的是,如果我把警报放在手风琴功能之前,那么一切都会按正确的顺序处理
很明显,我在这里面临着比赛条件。为什么会发生这种情况?我应该做些什么来保证有序的初始化序列?这只是一个猜测,但我猜这与下载图像之前运行的脚本有关。这似乎可以解释为什么在使用accordion函数之前使用
alert()
。它使图像有机会加载
如果这是正确的,您将希望使用jQuery的load()
事件处理程序来确保图像已完全加载
load()的文档:我认为竞争条件可能是,一旦galleria添加了所有图像,它们可能还没有下载。这将导致accordian函数假定图像是零乘零的 添加警报之所以有效,是因为需要花费大量时间,在您关闭警报时,图像已下载 若要确定执行顺序,请查看firebug和console.log,而不要使用警报,因为警报不会像警报一样阻止脚本执行
关于你的主要问题,我想看看galleria是否提供了一些回调功能,以确保在继续之前下载所有图像 就这样!真丢脸,我自己都猜到了。缩略图大小不是在galleria()初始值设定项中设置的,而是在图像对象的load()事件处理程序中设置的。我在查galleria的资料时错过了。谢谢是的,就是这样,谢谢。我必须修补galleria的代码,从css而不是从周围的DOM计算拇指大小。非常感谢Firebug提示!我不知道console.log。是否有一种方法来打印文件、行和时间,而不是像C++中的行、文件等宏那样的日志?向您展示firebug的功能。另外,欢迎来到stackoverflow!