为什么这个jquery没有在IE8中通过AJAX加载内容?

时间:2011-04-07 21:10:17

标签: javascript jquery ajax internet-explorer

IE浏览器功能令人惊叹,令我震惊。这一次确保了jQuery.min文件(google CDN)中的一个可爱错误,从而导致我的jquery不通过AJAX加载内容。

以下是链接:http://themes.thefinishedbox.com/portfolio/

点击任何其他浏览器中的顶部链接,然后在IE中进行测试,您将看到他们通过jQuery将外部页面加载到附加的div中。

我注意到在IE8中它似乎得到了加载器图标并且没有加载页面。我已经提醒了$ href变量,这似乎是相关的URL。不确定这里发生了什么?

这是源代码,如果有帮助,或者你可以只看它RAW:http://themes.thefinishedbox.com/portfolio/wp-content/themes/portfolio/js/custom.js?ver=3.1(你要看第二个$(函数()

$(function() {
    $('#navigation ul > li a').each(function() {

        $(this).click(function(e) {

            $('*').removeClass('active');

            $.ajaxSetup ({  
                cache: false  
            });

            var $this = $(this);

            e.preventDefault();

            var $url = $(this).attr('href'); 

            var $loader = '<div id="whiteLoader" />';

            if($('#page').length === 0) {

                $('<div id="page" />').insertAfter('#header');

                $('#page').queue(function() {
                    $(this).animate({height: '120px'}, 300);
                    $(this).html($loader);
                    $(this).animate({backgroundColor: '#fff'}, 300);
                    $(this).dequeue();                    
                });

                $('#page').queue(function() {
                    $('#page').load($url + ' #pageEntry', function() {
                        var $height = $('#pageEntry').height();
                        var $h = $height + 70;
                        $(this).animate({height: $h + 'px'}, 600, function() {
                            $(this).css({height: 'auto'});
                            $this.addClass('active');
                        });
                    });
                    $(this).dequeue();
                });

            } 

            if($('#page').length == 1 && $('#pageEntry').length == 1) {

                $('#page').slideUp(function() {

                    $(this).remove();
                    $this.removeClass('active');

                    $('<div id="page" />').insertAfter('#header');

                    $('#page').queue(function() {
                        $(this).animate({height: '120px'}, 300);
                        $(this).html($loader);
                        $(this).animate({backgroundColor: '#fff'}, 300);
                        $(this).dequeue();                    
                    });

                    $('#page').queue(function() {
                        $('#page').load($url + ' #pageEntry', function() {
                            var $height = $('#pageEntry').height();
                            var $h = $height + 70;
                            $(this).animate({height: $h + 'px'}, 600, function() {
                                $this.addClass('active');
                            });
                        });
                        $(this).dequeue();
                    });

                });
            }

            $('.closex').live('click', function() {
                $(this).parent().parent().slideUp(function() {
                    $(this).remove();
                    $('*').removeClass('active');
                });
            });

        });

    });
}); 

任何帮助都会受到大力赞赏!

2 个答案:

答案 0 :(得分:2)

问题在于您正在尝试为背景颜色设置动画

$(this).animate({backgroundColor: '#fff'}, 300);

除非您包含jQuery UI(实现此功能的 ),否则不支持此操作。

因此,您传递了无效输入,导致IE窒息。

阅读错误http://bugs.jquery.com/ticket/7256以获取更多信息..

包含对jquery UI脚本的引用可修复它(已测试)或注释掉该行(,因为后台已经是白色)。

答案 1 :(得分:0)

您是否尝试升级到最新版本的jquery?当前版本是1.5.2,看起来你正在使用1.4.2。