Странное поведение Javascript IE8 с Jquery и анимацией - PullRequest
0 голосов
/ 04 марта 2011

Я сейчас работаю над проектом, который использует меню в стиле аккордеона, но я думаю, что это скорее общий вопрос, касающийся IE8 и Jquery .animate ().По какой-то причине, даже если анимация кажется завершенной (протестирована с функциями обратного вызова), то, что отображается на экране, является неполным.Кажется, что он завершается, потому что всякий раз, когда я использую браузер, увеличивая и уменьшая масштаб, попробуйте выделить область или другие подобные вещи, чтобы вызвать изменение внешнего вида, которое оно исправляет само (т.е. отображается конечный результат анимации).Я протестировал в последней версии Chrome, и анимация выглядит отлично, так что это проблема IE.

Я анимирую свойство "margin-top" для следующего элемента на определенном расстоянии при щелчке по элементу, используя .animate (), открывая подменю внизу.Когда элемент «открывается» таким образом, а другой щелкается, вызывается функция, которая проверяет, открыты ли все элементы, и закрывает тот, который также использует .animate ().

Я набрал только описание кода, потому что мне кажется, что это проблема с производительностью браузера (возможно, только на этом компьютере?).Кто-нибудь слышал о том, что это происходит в IE8 или ниже в regaurds к анимации или просто в Jquery / Javascript и IE8 в целом?

1 Ответ

1 голос
/ 04 марта 2011

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

function repaint(jElement) {
    if (!$.browser.msie) return;
    for (var i = 0; i < jElement.length; i++) {
        jElement[i].className = jElement[i].className;
    }
}

Попробуйте запустить эту функцию на родительском элементе анимированного элемента после завершения анимации и посмотрите, устраняет ли она проблему.

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