jQuery не меняет класс или CSS в Internet Explorer - PullRequest
2 голосов
/ 02 августа 2011

У меня есть слайд-шоу с изображениями, на котором есть небольшой DIV для копирования рекламы.Каждый раз, когда слайд меняется, рекламный блок исчезает, а новый - в другом месте.

Это прекрасно работает в любом браузере, кроме IE.Все мои анимации jQuery работают нормально, но по какой-то причине коробка не меняет положение.Как .css (), чтобы изменить мои верхние / левые значения, так и фактическое изменение класса с помощью .attr () терпят неудачу в IE.

Вот JS, чтобы изменить класс, и показать коробку.Первая строка просто получает позицию из имени файла (image-6.jpg).

var heroPosition = vars.currentImage.attr('src').substr(-5, 1);
switch(heroPosition) {
  case "1":
    $('#hero-ad').attr('class','hero-position-1');
    break;
  case "2":
    $('#hero-ad').attr('class','hero-position-2');              
    break;
  case "3":
    $('#hero-ad').attr('class','hero-position-3');
    break;
  case "4":
    $('#hero-ad').attr('class','hero-position-4');
    break;
  case "5":
    $('#hero-ad').attr('class','hero-position-5');
    break;
  case "6":
    $('#hero-ad').attr('class','hero-position-6');
break;
}
$('#hero-ad').show("fold", {}, 1000);

Сам код был как бы взломан в слайдере изображений Nivo.

Живой сайтздесь http://www.sugarloaf.com/slredesignlocal/index.html

Большая часть JS в js / plugins.js.CSS для позиций находится в css / style.css

EDIT Я должен упомянуть, что я пытался использовать .addClass () и .removeClass (), и этот метод также не удался.

Ответы [ 3 ]

3 голосов
/ 02 августа 2011

Я предполагаю, что у вас есть эта проблема именно в IE, потому что вы используете substr() с отрицательным числомПроверьте этот пост .Вам следует вместо этого использовать slice(), чтобы получить ожидаемое значение.

2 голосов
/ 02 августа 2011

Используйте .addClass( className ) для изменения классов CSS.

например

$('#hero-ad').addClass('hero-position-1')

В зависимости от версии IE, class может быть недопустимым атрибутом.

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

Попробуйте, если хотите заменить класс, а не просто добавить новый класс.

$('#hero-ad')[0].className = 'hero-position-1';
...