jQuery fadeIn + fadeOut в IE? - PullRequest
       22

jQuery fadeIn + fadeOut в IE?

1 голос
/ 21 декабря 2009

У меня проблема с получением эффектов fadeIn и fadeOut в jQuery для правильной работы в IE (6 + 7 + 8). Скрипт отлично работает в FF и сафари (красиво исчезает), но в IE он просто показывает / скрывает - никакого эффекта замирания вообще нет.

Есть идеи?

$(".myclass ul li:eq(" + $(this).attr("href") + ")").fadeIn(5000); 

Атрибут href, который он получает, просто содержит числовое значение, представляющее позицию в длине ul.

Ответы [ 5 ]

3 голосов
/ 21 декабря 2009

У меня была та же проблема, и я использовал приведенный ниже код (по ссылке, размещенной Q8-кодером выше). Это работает хорошо, но у меня все еще были некоторые проблемы. Я заметил, что использование fadeTo для элемента контейнера, у которого были дочерние элементы с относительным или абсолютным позиционированием, не работало в IE8. Родитель исчезнет, ​​но все дочерние элементы с положительным или относительным позиционированием останутся в поле зрения. Единственный способ обойти это - выбрать элемент контейнера и все его дочерние элементы, используя jQuery, а затем применить fadeTo ко всем из них.

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

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

jQuery.fn.fadeTo = function(speed,to,callback) { 
    return this.animate({opacity: to}, speed, function() { 
        if (to == 1 && jQuery.browser.msie)  
            this.style.removeAttribute('filter');  
        if (jQuery.isFunction(callback)) 
            callback();  
    }); 
}; 
1 голос
/ 24 марта 2014

Для меня, использование fadeIn() сработало нормально, мой <div> был бы замечательно потушен в IE9, затем (после того, как затухание было завершено) он снова разорвался бы. Ах.

Исправлено добавление значения filter css, показанного здесь:

$("#fadeMeIn").fadeIn("slow");
$("#fadeMeIn").css('filter', 'none');
1 голос
/ 21 декабря 2009

попробуйте обходной путь .

0 голосов
/ 02 ноября 2010

У меня была похожая проблема со скриптом в IE8. После того, как я установил z-index, проблема исчезла. Я нашел решение ниже.

http://www.kevinleary.net/jquery-fadein-fadeout-problems-in-internet-explorer/

0 голосов
/ 21 декабря 2009

Попробуйте это:

$(".myclass ul li:eq(" + $(this).attr("href") + ")").hide().fadeIn(5000);
...