Размытие текста в IE при использовании jQuery fadeIn - PullRequest
1 голос
/ 16 сентября 2011

У меня проблемы с 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();  
    }); 
}; 

Проблема в том, что теперь я получаю следующую ошибку:

Uncaught RangeError: Максимальный размер стека вызовов превышен

Я вызываю функцию fadeIn несколькими способами, например так:

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

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

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

});

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

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

Я не совсем уверен, где проблема, но я предполагаю, что это связано с ее цепочкой или использованиемобратный вызов без указания скорости?

Кто-нибудь знает решение, которое сделает его совместимым?

Спасибо!

1 Ответ

0 голосов
/ 17 сентября 2011

попробуйте это (требуется 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');  
    }); 
}; 

Я подозреваю, что проблема заключалась в том, что операторы вызывались из-за слишком большого количества элементов. использование полного обратного вызова запускает обратный вызов для каждого элемента, в то время как использование метода обещания запускает его, когда все элементы выполнены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...