jQuery .each和.children没有在IE中工作

时间:2013-09-19 06:44:57

标签: javascript jquery html json internet-explorer

我正在制作Instagram图片滑块Feed,它在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);
           }

        });

1 个答案:

答案 0 :(得分:0)

检查您的jquery version是否为gereater than 1.9 ,然后在 IE

中无效
  

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

阅读jquery-2-0-released

另请检查您console.log()中未使用javascript code,因为它在 IE

中不起作用

您使用CDATA检查它是properly ends还是阅读Should I use "]]>" or "//]]>" for closing a CDATA section into xHTML