jQuery в IE8 .css () возвращает неопределенное значение - PullRequest
2 голосов
/ 15 декабря 2010

Это похоже на ошибку в IE8 (не тестировал 7, но, безусловно, тоже не получится). value в функции возвращает undefined. В Firefox работает нормально:

$('selector').css('property', function(index, value){ alert(value); });

Фактический код из моего скрипта выглядит следующим образом:

$('.scrollBkg').css('background-position', function(index, value){
    var backgroundPosition = value.split(' ');
    return (parseFloat(backgroundPosition[0]) + (($(this).hasClass('scrollLeft') ? -1 : 1) * parseInt($(this).css('z-index'))) / 2) + 'px ' + backgroundPosition[1];
});

Почему value является undefined в IE? Скорее, как я могу сделать эту работу, как ожидалось?

Ответы [ 3 ]

5 голосов
/ 15 декабря 2010

В MSIE восстановить backgroundPositionY и backgroundPositionX вместо backgroundPosition

var backgroundPosition = (document.all && !window.opera)
                              ?[$(this).css('backgroundPositionX'),
                                $(this).css('backgroundPositionY')]
                              : value.split(' ');
1 голос
/ 15 декабря 2010

в соответствии с соответствующим разделом документации jquery :

function(index, value): функция, возвращающая значение для установки.Получает индексную позицию элемента в наборе и старое значение в качестве аргументов.

Так что, если не было предварительно установлено значение, я бы ожидал, что value может быть undefinedили, может быть, null.Я мог видеть, что это поведение отличается в разных браузерах - по сути, это вопрос того, какое значение в браузере используется по умолчанию для свойства css, с которым вы работаете.По умолчанию IE может быть undefined, тогда как firefox по умолчанию имеет более значимое значение.

1 голос
/ 15 декабря 2010

Я не уверен, что это ваша проблема, но ... IE7, как и 8, имеет проблемы с одиночными кавычками для значений селектора / идентификатора и может не найти соответствующий элемент DOM.

В последнее время яЯ только что закончил проект jquery очень высоко на стороне IE, и я переключил все свои «кавычки» на «*», чтобы заставить его работать.

в вашем случае попробуйте:что IE никогда не нашел ваш элемент и, следовательно, не может добавить к нему новый класс, поэтому "undefined"

Для любого значения CSS в jquery я склонен использовать двойные кавычки ... вместо одинарных кавычек.

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