Стиль 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);
});