Как найти background-position / background-image и т. Д. Для нескольких фонов, используя jQuery в Safari - PullRequest
35 голосов
/ 19 июля 2011

Может быть, я что-то здесь упускаю.

Я пытаюсь получить текущую фоновую информацию для элемента (div) с несколькими фонами, заданного с использованием длинных букв background-repeat, background-position и background-image.

Используя jQuery, я просто делаю var bPos = $('#element').css('background-position'), чтобы получить набор текущих позиций, что даст мне что-то вроде '0 0, 100px 100px, left bottom' в Firefox и Chromium (в настоящее время версии 5 и 12 соответственно), но в Safari (версия 5 в ОС -X) он просто возвращает первую пару значений ('0 0'). Эти значения CSS задаются во внешней таблице стилей.

Кто-нибудь знает, почему это так, и как это сделать, чтобы получить полный набор пар значений в Safari (использование сокращенного свойства background также не делает этого)?

Edit:

Вот CSS, который используется во внешней таблице стилей:

#page{
    background-repeat: repeat-x, repeat-x, repeat-x, repeat-x, repeat-x;
    background-image: url('../images/line.png'), url('../images/line.png'), url('../images/line.png'), url('../images/line.png'), url('../images/line.png');
    background-position: 0 798px, 0 653px, 0 125px, 0 88px, 0 78px;
}

Edit:

Хорошо, я сделал тестовый пример для этого на jsFiddle и сообщил о нем как о jQuery ошибка , так как это кажется воспроизводимым поведением (хотя я принимаю, что это может быть проблема реализации браузера, а не ошибка jQuery).

Тем не менее, если у кого-то есть идеи ...

Edit:

Билет jQuery закрыт. Полагаю, это означает, что это ошибка Safari. Я не совсем уверен, как идти дальше, но я опубликовал отчет об ошибках в Apple.

Edit:

Как указывает Синдре Сорхус, похоже, что это исправлено в Safari 5.1.

Ответы [ 3 ]

1 голос
/ 06 августа 2011

Так как это исправлено в 5.1, я думаю, это уже не имеет большого значения, но я хотел бы узнать, можно ли в качестве обходного пути изначально установить фон из js на

$('#page').attr('style', '...');

и затем прочитать его оттуда... вроде глупо и боль в заднице, да.

1 голос
/ 18 августа 2011

Используйте плагин Jquery Background Position.http://www.webinventif.fr/jquery-background-position-mettez-du-mouvement-dans-votre-background/

0 голосов
/ 04 августа 2011

Вы можете попробовать использовать разные классы.Это было бы просто.

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