Следующий код работал отлично в IE7, пока не начал использовать файл IE9.js. Файл IE9.js добавляет дополнительный класс "ie7_class82" к уже существующим классам, которые я добавил. Приведенный ниже код перестает работать в IE7. Есть ли известная проблема с неспособностью найти соответствующие классы с jQuery, когда присутствуют несколько классов?IE7 проблема с jQuery найти?
-------------- HTML код скелет -------------
<table cellspacing="0" cellpadding="0" bgcolor="#FFF" width="100%">
<thead>
---table rows here----
</thead>
<tbody>
<tr>
<td>
<table cellspacing="0" border="0" width="100%" style="float:left">
<thead>
<tr style="text-align:left;">
<td style="font-size:14px;font-weight:bold;text-align:left;padding:10px 5px">
<span><label class="quarterly">Quarterly</label></span>
<span style="padding:5px">|</span>
<span><label class="monthly">Monthly</label></span>
<span style="padding:5px">|</span>
<span><label class="daily">Daily</label></span>
</td>
</tr>
</thead>
<tbody>
---table rows here----
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" border="0" width="100%" style="float:left" class="quarterly">
---table rows here---
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" border="0" width="100%" style="float:left" class="monthly">
---table rows here---
</table>
</td>
</tr>
<td>
<table cellspacing="0" border="0" width="100%" style="float:left" class="daily">
---table rows here---
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
--------- JQuery код --------------
$('table thead span label').click(function() {
$(this).parents('table').parents('table').find('table').hide();
$(this).closest('table').find('tbody tr').hide();
$(this).closest('table').show();
$(this).closest('table').find('tbody tr.' + this.className).show();
$(this).parents('table').parents('table').find('table.' + this.className).show();
});
Примечание: К сожалению, нет ошибок в IE7 (и отлично работает в FF и Chrome). Предполагается скрыть все таблицы и показать только те, которые соответствуют имени класса, которое присутствует в теге метки. IE7 скрывает все таблицы, но не отображает таблицы, соответствующие классу.
Обновленный код (который работает в IE7, благодаря SO):
$('table thead span label').click(function() {
var classSelector = $.trim($(this).attr('class')).split(/\s+/g).join(',');
$('label:not('+classSelector+')').css('color','#00425f');
$(this).css('color','#d6c9b9');
$(this).parents('table').parents('table').find('table').hide();
$(this).closest('table').find('tbody tr').hide();
$(this).closest('table').show();
$(this).closest('table').find('tbody tr.' + classSelector).show();
$(this).parents('table').parents('table').find('table.'+ classSelector).show();
});
'IE9.js'? IE9 - это браузер, а не javascript. Это плагин или что-то еще, или вы запутались? – gdoron
@gdoron Я думаю, что это его файл js, который имеет исправления для IE –
@gdoron google ie9.js он похож на ie7.js или http://code.google.com/p/ie7-js/ – Huangism