Функция jQuery addClass() на сайте Drupal не работает в IE7

#jquery #drupal #internet-explorer-7 #drupal-7 #addclass

#jquery #drupal #internet-explorer-7 #drupal-7 #addclass

Вопрос:

Я пытаюсь использовать jQuery в контексте сайта Drupal. Скрипт отлично работает в других браузерах, включая IE8, но в IE7 он частично ломается.

Пример кода скрипта:

 function showEducation() {
   jQuery('#map-overlay').attr('class','').addClass('education');
   jQuery('#map-legend-image').attr('src','/sites/all/images/map/legend-education.png');
}
  

… используется для скрытия наложения на изображение карты, а также для изменения изображения src для легенды карты:

 <div id="map">
  <img id="map_image" src="[map path]" />
  <div id="map-overlay"></div>
  <div id="map-legend">
    <img src="[legend path]" usemap="#map-legend-imageMap" id="map-legend-image" />
    <map name="map-legend-imageMap" id="map-legend-imageMap">
      <area shape="rect" coords="12,11,271,66" href="javascript:showEducation()" />
    </map>
  </div>
</div>
  

Легенда обновляется при нажатии на соответствующую область карты изображения, но наложение не выполняется.

Я столкнулся с довольно большим количеством проблем с addClass() в IE7, но ни одна из проблем не казалась совершенно одинаковой, а решения не предлагались.

Комментарии:

1. Поменяйте attr('class', '') removeClass() местами.

2. Какую версию jQuery вы используете?

3. removeClass() ничего не изменил. Что касается версии jQuery, она выглядит как 1.4.4, версия, которая поставляется с Drupal 7.

Ответ №1:

 jQuery('#map-overlay').attr('class','').addClass('education');//instead of this
  

используйте

 jQuery('#map-overlay').removeClass().addClass('education');
  

removeClass() удаляет все классы из элемента.

Ответ №2:

Я никогда не видел, чтобы addClass() не работал в IE7. Вы уверены, что между ними есть проблема?

Можете ли вы использовать addClass() без цепочки и посмотреть, работает ли она? Если это не сработает, можете ли вы сделать что-то вроде .hide(), чтобы увидеть, скрывает ли он ваш элемент? Я пытаюсь определить, действительно ли jQuery (‘#map-overlay’) захватывает ваш элемент во время выполнения этого кода или нет.

Как правило, без примера мы не можем даже проверить, что это проблема с addClass() и IE7. Если приведенное выше не помогает вам в отладке, можете ли вы предоставить ссылку jsfiddle, и я протестирую ее на IE7?