使用 jQuery fadeIn 时 IE 文本模糊

发布于 2024-12-05 06:55:39 字数 722 浏览 0 评论 0原文

我使用IE使用jQuery Fadein有问题,由于“过滤器”,文本是频线的。我在这里搜索并找到了此解决方案:

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();  
    }); 
}; 

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

未熟练的连击:最大呼叫堆栈大小超过

我以几种方式称为Fadein函数:

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

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

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

});

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

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

我不确定问题在哪里,但是我猜这是链接或使用回调而无需指定速度吗?

有人会知道可以使这种兼容的解决方案吗?

谢谢你!

I'm having issues with IE using jQuery fadeIn where text is blury due to the 'filter'. I've searched here and found this solution:

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();  
    }); 
}; 

The problem is that now I get the following error:

Uncaught RangeError: Maximum call stack size exceeded

I call the fadeIn function in a few ways, like this:

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

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

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

});

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

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

I'm not exactly sure where the issue is, but I'm guessing it's with chaining it or using the callback without specifying speed?

Would anyone know a solution that will make this compatible?

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

潜移默化 2024-12-12 06:55:39

试试这个(需要 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 方法在所有元素完成时运行回调。

try this (requires 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');  
    }); 
}; 

i suspect the issue was the if statements were being called on too many elements. using the complete callback runs the callback on each element, while using the promise method runs it when all elements are done.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文