我使用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();
我不确定问题出在哪里,但我猜测它是链接它还是在没有指定速度的情况下使用回调?
有人会知道一个可以兼容的解决方案吗?
谢谢!
答案 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方法在完成所有元素时运行它。