Поведение скрипта в IE
Есть следующий скрипт (фрагмент кода):
$(".class_news").hover(function () {
var str = this.id.substr(-1) // идентификатор tr-ки, на которую была наведена мышь
$('#tr'+str).css({'background-color':'#ffffff'}); // задаем белый цвет фона
...
},
function() {
...
});
Опера, фф отображают все верно, а вот в ИЕ скрипт выполняется только если написать определенно:
$('#tr2').css({'background-color':'#ffffff'}); // задаем белый цвет фона
Иначе скрипт отказывается выполняться в этом браузере. В чем может быть проблема и как задать верно обращение к айдишнику в этом случае? |
Если я правильно понял, то this у вас уже указывает на нужный вам tr, тогда не надо мудрить с id, и пишется все намного проще
$(".class_news").hover(function () {
$(this).toggleClass("hover");
});
И пишем следующий css
tr.hover td {
bacground-color: #fff;
}
|
nikita.mmf
да, мой фейл, из кода не ясно, что я хочу, потому как я его урезал, да еще и неверно это будет слайдер новостей. дело в том, что при наведении на нужную ячейку (которая и будет this), цвет выделенной ранее должен стать белым и проблема именно в этой строке, возможно, неверная конструкция и можно как-то иначе записать
$('#tr'+str).css({'background-color':'#ffffff'});
|
Приведи пожалуйста ваш html, очень сложно понять, откуда что брется
|
вот жава-фрагмент
<script type="text/javascript">
$(document).ready(function()
{
var curr = 0; // порядковый номер
$('#tr0').css({'background-color':'#edf1f7'}); // выделение tr-ки первой новости
<?php $act = getActNews();?> // количество активных новостей
$(".class_news").hover(function () { // при наведении на тр-ку, ее цвет должен смениться
var str = this.id.substr(-1) // последний символ айди тр-ки
$('#tr'+curr).css({'background-color':'#ffffff'}); // сняли выделение с предыдущей активной ячейки
curr = str; // определили номер выделенной
$(this).css({'background-color':'#edf1f7'}); // и выделили нужную
},
function() {
});
});
</script>
вот хтмл, пхп
<?php
if(count($AllNews)){
$i = 0;
foreach($AllNews as $oneNews){
$id = $oneNews->id_news;
?>
<tr class="class_news" id="tr<?=$i;?>" > // вот здесь указываю класс для tr-кии и ее айдишник
<td style="cursor: pointer;"><table border="0" width="100%" cellpadding="0" cellspacing="0" style="margin-top:6px">
<tr>
<td ><a href=""></a></td>
</tr>
</table></td>
</tr>
<? $i++; }} ?>
|
var $activeRow = $('#tr0').addClass('active');
$(".class_news").hover(function () {
$activeRow.removeClass("active");
$activeRow = $(this).toggleClass('active');
})
Для изменения стилей лучшей изпользовать css-классы, и, если я не ошибаюсь, в IE проблема с заданей фона для tr, лучше делать так
.active td {
background-color:#edf1f7;
}
|
nikita.mmf, спасибо за совет насчет классов, это действительно удобно.
А проблема была в неверном значении переменной в этой строке: var str = this.id.substr(-1) в ИЕ возвращалось не число, а все значение атрибута id. Текущую строку заменил на var str = this.id.charAt(2); работает тему, думаю, можно закрыть |
| Часовой пояс GMT +3, время: 22:25. |