使用jQuery fadeIn时,IE文本模糊

时间:2011-09-16 19:38:21

标签: javascript jquery internet-explorer

我使用jQuery fadeIn在IE中遇到问题,因为“过滤器”导致文本出现问题。我在这里搜索并找到了这个解决方案:

jQuery.fn.fadeIn = function(speed, callback) { 
    return this.animate({opacity: 'show'}, speed, function() { 
        if (jQuery.browser.msie)  
            this.style.removeAttribute('filter');  
        if (jQuery.isFunction(callback)) 
            callback();  
    }); 
}; 

问题是现在我收到以下错误:

  

未捕获RangeError:超出最大调用堆栈大小

我通过几种方式调用fadeIn函数,如下所示:

$('.item').fadeIn();

$('.item').fadeIn(50);

$('.item').fadeIn(function(){

});

$('.item').delay(500).fadeIn();

$('.item').hide().fadeIn();

我不确定问题出在哪里,但我猜测它是链接它还是在没有指定速度的情况下使用回调?

有人会知道一个可以兼容的解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个(需要jquery 1.6 +):

jQuery.fn.fadeIn = function(speed, callback) { 
    var _this = this;
    return this.animate({opacity: 'show'}, speed, callback).promise().done(function() { 
        if (jQuery.browser.msie)  
            _this.removeAttr('filter');  
    }); 
}; 

我怀疑问题是if语句被调用了太多元素。使用完整的回调运行每个元素的回调,而使用promise方法在完成所有元素时运行它。