динамическое переключение 'background-image' не работает в IE - PullRequest
2 голосов
/ 08 июля 2010

Я динамически переключаю фоновое изображение div с битом jquery ниже.Работает просто отлично в FF, но оказывается, что в IE это не так.Есть идеи почему?IE не перезагружает изображение, если свойство css изменилось?Любые указатели будут оценены.

$(function(){
   $('.header').each(function(){
      $(this).hover(function(){
         $('#headertab').css('background-image','url(/tab_'+$(this).attr('href').split('path=')[1]+'.gif');
      });
   });
}); 

Ответы [ 5 ]

6 голосов
/ 08 июля 2010

Попробуйте установить backgroundImage вместо background-image.

Атрибуты CSS при доступе через Javascript традиционно используют camelCase вместо тире, чтобы избежать вопросов синтаксиса. (element.style.background-image выглядит так, как будто вы делаете вычитание.) Firefox, вероятно, достаточно прогрессивен, чтобы допускать тире, но IE ... кажется, что нет.

3 голосов
/ 26 июня 2012

У меня была проблема, когда у элемента был предопределенный атрибут стиля, устанавливающий фоновое изображение:

<div id="bg-element" style="background-image: url(foo.jpg);"></div>

Правило фонового изображения можно изменить с помощью jQuery, но изображение не будет обновляться.

Решением было сначала удалить атрибут, а затем снова добавить атрибут с новым значением:

jQuery('#bg-element').removeAttr('style').attr('style', 'background-image: url(bar.jpg);');
1 голос
/ 08 июля 2010

Вы неправильно устанавливаете свойства CSS с помощью jquery.Вы можете прочитать здесь как ссылаться на имена свойств (в верблюжьей оболочке, без дефиса).

0 голосов
/ 20 июля 2010

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

$(function(){
   $('.header').each(function(){
      $(this).hover( function () {
        $('#headertab').addClass('dynamic-background-image-class');
      }, function () {
        $('#headertab').removeClass('dynamic-background-image-class');
      });
   });
}); 

css:

.dynamic-background-image-class {
  background: transparent url(/path/to/image.png) 0 0 no-repeat;
}

Я не знаю, поможет ли это вашей ситуации как изображению вашего заголовкаимена основаны на URL.Одним из преимуществ является то, что изображение извлекается и кэшируется, когда клиент запрашивает файл css.

0 голосов
/ 10 июля 2010

, если у вас есть пути к изображениям, установленным внутри ЗНАЧЕНИЯ элемента списка SELECT, вы, вероятно, можете использовать:

<select onchange="document.getElementById('background').style.backgroundImage='url(&quot;'+this.value+'&quot;)';">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...