-1

我正在制作 Instagram 图像滑块提要,它在 Chrome、Safari、Firefox 和 Opera 中运行良好,但在所有版本的 IE 中都失败了。它甚至没有给我一条错误消息,它什么也不做。

我需要将图像的高度返回给父 div 以获得正确的背景高度。

在 IE 中,第一个图像被加载,然后什么都没有发生,它甚至不返回第一个图像的高度。我四处搜索并认为这可能与 .children() 和 .each() 在 IE 中无法正常工作有关,但我不确定。

那么这是 IE/jQuery 兼容性问题的原因吗?或者是别的什么?有没有其他方法可以做到这一点?(出于安全目的,我删除了大部分 Auth 令牌)

她是结果的杰作:http: //jsfiddle.net/5ACr9/embedded/result/

        (function($){
            $.fn.MySlider = function(interval) {
            var slides;
            var cnt;
            var amount;
            var j;

            function run() {
                // hiding previous image and showing next
                $(slides[j]).fadeOut(1000).removeClass("selected");
                j++;
                if (j >= amount) j = 0;
                $(slides[j]).fadeIn(1000).addClass("selected");
                // loop
                setTimeout(run, interval);
            }


            slides = $('#insta-slider').children();
            amount = slides.length;
            j=0;

            setTimeout(run, interval);
            };
        })(jQuery);

        // custom initialization
        jQuery(window).load(function() {
            $('.smart_gallery').MySlider(5000);
              //gets the height of the first image and returns it to parent
            $( "#insta-slider" ).each(function() {
                        var newHeight = 0, $this = $( this );
                    $.each( $this.children(), function() {
                        newHeight = $( this ).height();
                    });
                        $this.height( newHeight );
              });

            var tid = setTimeout(resize, 5000);

            function resize(){
                  //returns the height of each image after the first one
                  $( "#insta-slider" ).each(function() {
                            var newHeight2 = 0, $this = $( this );
                        $.each( $this.children(".selected"), function() {
                            newHeight2 = $( this ).height();
                        });
                            $this.height( newHeight2 );
                  });

              tid = setTimeout(resize, 5000);
           }

        });
4

1 回答 1

0

检查你的jquery version是否是gereater than 1.9那么它在IE中不起作用

正如所承诺的,这个版本抛弃了旧的 Internet Explorer 6、7 和 8 浏览器。作为回报,它更小、更快,并且可以用于旧版 IE 兼容性所需的代码通常会导致其自身问题的 JavaScript 环境。不过不用担心,jQuery 团队仍然支持在 IE 6/7/8 上运行的 1.x 分支。您可以(并且应该)在需要适应旧版浏览器的网站上继续使用 jQuery 1.9(以及即将推出的 1.10)。

阅读jquery-2-0-released

还要检查你没有console.log()在你的中使用,因为它在IEjavascript code中不起作用

您已经使用CDATA检查它是properly ends或阅读我应该使用“]]>”还是“//]]>”来将 CDATA 部分关闭到 xHTML

于 2013-09-19T06:57:32.577 回答