Поведение скрипта в 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, время: 04:22. |