Стиль jQuery не применяется в Safari

У меня есть абсолютно позиционированный элемент, который я перемещаю с помощью jQuery, используя CSS, как правило, "влево".

$("#element").css('left', '103px');

В Firefox это работает как положено. Однако в Safari я вижу стиль, появляющийся в веб-инспекторе под element.style, но стиль не обновляется. Если я отключаю (и снова включаю) любые соответствующие CSS-правила (даже те, которые не применяются непосредственно к моему div), стиль, применяемый с помощью jQuery, будет отображен.

Я использую Safari 5.0.6 на старом PowerMac с jQuery 1.7.2.

5 ответов

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

попробуй это

$("#element").css('left', '103px').parent().addClass("dummyClass").removeClass("dummyClass");

если это не сработает, то сработает наверняка.

$("#element").css('left', '103px');
$("body").addClass("dummyClass").removeClass("dummyClass");

проблема в том, что иногда сафари не перерисовывает страницу, когда мы меняем CSS, поэтому нам нужно принудительно перерисовать

! важно сделать свое дело

$("#element").css('left', '103px !important');

У меня была похожая проблема с реализацией видео прогресса. Элемент, который я хотел разместить, находился внутри DIV с 'display:table-caption;' Прочитав @gaurang171 комментарий к элементам td, мне пришлось удалить этот элемент из таблицы div и установить "display:block;" и положение элемента обновляется без использования класса dummyClass. Элемент div с дисплеем: блок внутри заголовка таблицы не работал, он должен был находиться вне таблицы.

Кажется, у Safari есть проблема с перерисовкой элементов. К счастью, мы можем принудительно перерисовать, добавив transform: translateZ(0);в класс css. Кажется, что это исправлено на BigSur, но происходит в Safari Catalina.

Ну, это работает для меня в сафари 5.1.7

По моему опыту, когда.css() не удается, я пытаюсь с.animate() с 0 в качестве времени (мгновенного)

Попробуйте что-то вроде этого и дайте мне знать, если это работает (протестировано в Safari 5.1.7 и работает)

        $(document).ready(function(){
           $("#element").animate({
               left: '+=103px'
           }, 0);
        });
Другие вопросы по тегам