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

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

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

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

Я запускаю Safari 5.0.6 на старом PowerMac, с jQuery 1.7.2.

Ответ 1

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

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

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

если это не сработает, будет работать точно.

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

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

        $(document).ready(function(){
           $("#element").animate({
               left: '+=103px'
           }, 0);
        });