【问题标题】:jQuery Cycle plugin IE6/7 issuesjQuery Cycle 插件 IE6/7 问题
【发布时间】:2014-01-15 00:06:24
【问题描述】:

我使用 Cycle 插件实现了幻灯片放映,该插件适用于除 IE6 和 7 之外的所有浏览器,其中图像仅显示在列表中,而 #page_copy div 并未隐藏。我整天都在浏览代码,没有任何运气,也不确定我应该如何寻找或寻找什么。

调试此问题的最佳方法是什么?我知道当我删除其余代码时#page_copy div 隐藏了,我尝试了相反的方法(没有结果)

<script type="text/javascript" charset="utf-8">
        jQuery.fn.fadeToggle = function(speed, easing, callback) { 
            return this.animate({opacity: 'toggle'}, speed, easing, callback); 
        };


        $(document).ready(function() {
            $('#page_copy').hide();
            $('a#info_close_button').click(function() {
                $('#page_copy').fadeOut(200);
                return false;
            });
            $('a#info_button').click(function() {
                $('#page_copy').fadeToggle(200);
                return false;
            });
        });


        $(window).load(function() {
            // vertically center single image
            var $image_cnt = $("#images > img").size();
            if($image_cnt < 2) {
                var $single_img = $("#images").children(':first-child');
                var h = $single_img.height();
                $single_img.css({
                    marginTop: (620 - h) / 2,
                });
                $(".next").css("display","none");
                $(".prev").css("display","none");
            }
        });


        // wait until images have loaded before starting cycle
        $(window).load(function() {
            // front image rotator
            $('#images').cycle({ 
                fx: 'fade',
                speed:  300, 
                next:   '.next', 
                prev:   '.prev',
                containerResize: 0,
                timeout:  0, 
                delay:   -2000,
                before: onBefore
            });

        }); 

        // hide all but the first image when page loads
        $(document).ready(function() {
            $('#images img:gt(0)').hide();
        });

        // callback fired when each slide transition begins
        function onBefore(curr,next,opts) {
            var $slide = $(next);
            var w = $slide.width();
            var h = $slide.height();
            $slide.css({
                marginTop: (620 - h) / 2,
                marginLeft: (650 - w) / 2
            });
        };
    </script>

【问题讨论】:

    标签: javascript jquery jquery-plugins internet-explorer-7 internet-explorer-6


    【解决方案1】:

    我真的不明白为什么你有多个 $(document).ready$(window).load..

    也许您应该尝试将所有内容放在一个 $(document).ready 块中。

    另外将function onBefore(...) 的定义移动到&lt;script&gt; 标记的开头。直接在jQuery.fn.fadeToggle 代码之前。

    尝试同时删除这段代码末尾不需要的逗号

    $single_img.css({
        marginTop: (620 - h) / 2, //<---- remove comma
    });
    

    同时删除这个不需要的分号

    function onBefore(curr,next,opts) {...}; //<--- unneeded
    

    【讨论】:

    • 感谢提示抖动。我删除了那个逗号和分号,并将所有代码移到一个 $(document).ready 和一个 $(window).load 中,但仍然有同样的问题。两者都需要,否则如果所有内容都在 doc.ready 中,则无法及时评估图像大小
    猜你喜欢
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多