jQuery CSS ошибка в IE8 - PullRequest
       21

jQuery CSS ошибка в IE8

9 голосов
/ 14 сентября 2009

У меня ошибка в IE8 при попытке получить свойство из css для элемента с фоновым изображением.

el.css({ 'background-position': "10px 10px"}); //set some 
alert(el.css("background-position")); //get the value

В Opera, FF, Chrome, Safari работает, я получаю "10px 10px". Не в IE8, где я получил неопределенный. Я открыл отчет об ошибке , но до тех пор, как вы думаете, это будет хорошим решением этой проблемы. Как мне получить эти значения другим способом?

Ответы [ 4 ]

8 голосов
/ 14 сентября 2009

это должно помочь.

это ссылка на jquery ticket 2462 , что тоже интересно

Редактировать Первый канал мертв, Машина обратного хода на помощь.

И, на всякий случай, если archive.org когда-нибудь соберется, вот содержание сообщения в блоге о декстрозе.

У jQuery (по крайней мере до версии 1.2.6) проблема с интернетом Проводник при задании фона объекта.

$('h1:first').css('background-position');

В других браузерах класса А вы получаете 2 значения (в пикселях или%) представляющие соответственно x-позицию и y-позицию элемент. В Internet Explorer (6 и 7) вы получаете неопределенный. Эта проблема в том, что IE не знает, что такое background-position, он знает только 2 другие вызовы: background-position-x и background-position-y. Вот кусок кода JavaScript для решения этой проблемы.

(function($) {
  jQuery.fn.backgroundPosition = function() {
    var p = $(this).css('background-position');
    if(typeof(p) === 'undefined') 
        return $(this).css('background-position-x') 
               + ' ' + $(this).css('background-position-y');
    else return p;
  };
})(jQuery);

Теперь вы можете использовать этот плагин jQuery, чтобы получить background-position элемент:

$('h1:first').backgroundPosition();
4 голосов
/ 14 сентября 2009

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

alert(el.css("background-position-y")); //get the y value
alert(el.css("background-position-x")); //get the x value

тогда вы можете объединить два:)

1 голос
/ 14 сентября 2009

Я наконец разберу их с:

alert(el.attr('style')); // this seems to work in all browsers
1 голос
/ 14 сентября 2009

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

alert(el.css("background")); //url(some/url/to/image.jpg) no-repeat 10px 10px

И тогда вам нужно просто получить числовые значения, за которыми следует «px»

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