代码之家  ›  专栏  ›  技术社区  ›  Darknight

页面刷新时jquery循环失败

  •  2
  • Darknight  · 技术社区  · 16 年前

    在与此类似的问题中:

    Jquery Cycle + Firefox Squishing Images

    我已经设法克服了最初的问题使用杰夫斯回答在上面的链接。

    但是现在我注意到了一个新的bug,页面刷新时它根本不起作用。我尝试了一个硬刷新(ctrl+f5),但这不起作用。

    然而,当你一页接一页的时候,它加载得很好。

    这是我的修改版本(摘自杰夫的):

    <script type="text/javascript">
    $(document).ready(function() 
    {
    var imagesRemaining = $('#slideshow img').length;
    $('#slideshow img').bind('load', function(e) 
        {
            imagesRemaining = imagesRemaining - 1;
            if (imagesRemaining == 0) 
                {
                    $('#slideshow').show();
                    $('#slideshow').cycle({
                        fx: 'shuffle',
                        speed: 1200
                    });
                }
        });
    });
    </script>
    

    有什么想法吗?我也尝试过jquery live,但无法正确实现它。我还尝试了meta标记来强制加载图像。但这只是第一次。

    4 回复  |  直到 14 年前
        1
  •  3
  •   Nick Craver    16 年前

    而不是这个:

    $(document).ready(function() { });
    

    使用这个:

    $(window).load(function() { });
    

    在这种情况下,您希望加载图像。从你的问题看来,它似乎只在图像准备好时才起作用,例如从缓存中立即加载。这将等到加载图像后再执行。

        2
  •  1
  •   Matt Loye    15 年前

    或者您可以使用:

    $(窗口).load(函数(){

    //blabla

    (});

    这也管用。

        3
  •  0
  •   Community Mohan Dere    9 年前

    最终解决:

    非常感谢你的建议,

    “liverpoolsnumber9”提供的链接证明是卓有成效的:

    How to tell whether the $(window).load()/window.onload event has already fired?

    我使用了炖肉javascript,因此:

    <script type="text/javascript">
        $.windowLoaded(function() {
            DoCycle();
        });
    
    function DoCycle() {
        $('#slideshow').show();
        $('#slideshow').cycle({
            fx: 'shuffle',
            speed: 1200
        });
    }
    </script>
    

    问题似乎是加载图像(很大)花费了时间,而jquery在dom准备就绪时启动。但仅仅因为dom已经加载并不意味着图像已经准备好了!

    以防其他人对大图像有类似的问题。

        4
  •  0
  •   Karl    15 年前

    $.windowloaded()似乎是一个jquery插件,而不是库的直接部分,因此我建议使用$(window.loaded());