Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.05.2011, 20:15
Аватар для alexkill
Новичок на форуме
Отправить личное сообщение для alexkill Посмотреть профиль Найти все сообщения от alexkill
 
Регистрация: 19.05.2011
Сообщений: 7

Поведение скрипта в IE
Есть следующий скрипт (фрагмент кода):

$(".class_news").hover(function () {
	var str = this.id.substr(-1) // идентификатор tr-ки, на которую была наведена мышь
	$('#tr'+str).css({'background-color':'#ffffff'}); // задаем белый цвет фона
            ...
    },
        function() {
	 ...	
    });


Опера, фф отображают все верно, а вот в ИЕ скрипт выполняется только если написать определенно:
$('#tr2').css({'background-color':'#ffffff'}); // задаем белый цвет фона


Иначе скрипт отказывается выполняться в этом браузере.

В чем может быть проблема и как задать верно обращение к айдишнику в этом случае?

Последний раз редактировалось alexkill, 19.05.2011 в 20:18.
Ответить с цитированием
  #2 (permalink)  
Старый 20.05.2011, 11:24
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Если я правильно понял, то this у вас уже указывает на нужный вам tr, тогда не надо мудрить с id, и пишется все намного проще
$(".class_news").hover(function () {
  $(this).toggleClass("hover");
});

И пишем следующий css
tr.hover td {
  bacground-color: #fff;
}
Ответить с цитированием
  #3 (permalink)  
Старый 20.05.2011, 13:20
Аватар для alexkill
Новичок на форуме
Отправить личное сообщение для alexkill Посмотреть профиль Найти все сообщения от alexkill
 
Регистрация: 19.05.2011
Сообщений: 7

nikita.mmf
да, мой фейл, из кода не ясно, что я хочу, потому как я его урезал, да еще и неверно

это будет слайдер новостей. дело в том, что при наведении на нужную ячейку (которая и будет this), цвет выделенной ранее должен стать белым

и проблема именно в этой строке, возможно, неверная конструкция и можно как-то иначе записать
$('#tr'+str).css({'background-color':'#ffffff'});
Ответить с цитированием
  #4 (permalink)  
Старый 20.05.2011, 14:00
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Приведи пожалуйста ваш html, очень сложно понять, откуда что брется
Ответить с цитированием
  #5 (permalink)  
Старый 20.05.2011, 14:28
Аватар для alexkill
Новичок на форуме
Отправить личное сообщение для alexkill Посмотреть профиль Найти все сообщения от alexkill
 
Регистрация: 19.05.2011
Сообщений: 7

вот жава-фрагмент
<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++; }} ?>

Последний раз редактировалось alexkill, 20.05.2011 в 14:31.
Ответить с цитированием
  #6 (permalink)  
Старый 20.05.2011, 15:53
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

var $activeRow = $('#tr0').addClass('active');
$(".class_news").hover(function () {
  $activeRow.removeClass("active");
  $activeRow = $(this).toggleClass('active');
})


Для изменения стилей лучшей изпользовать css-классы, и, если я не ошибаюсь, в IE проблема с заданей фона для tr, лучше делать так
.active td {
  background-color:#edf1f7;
}
Ответить с цитированием
  #7 (permalink)  
Старый 31.05.2011, 16:43
Аватар для alexkill
Новичок на форуме
Отправить личное сообщение для alexkill Посмотреть профиль Найти все сообщения от alexkill
 
Регистрация: 19.05.2011
Сообщений: 7

nikita.mmf, спасибо за совет насчет классов, это действительно удобно.
А проблема была в неверном значении переменной в этой строке:
var str = this.id.substr(-1)


в ИЕ возвращалось не число, а все значение атрибута id.
Текущую строку заменил на
var str = this.id.charAt(2);

работает

тему, думаю, можно закрыть

Последний раз редактировалось alexkill, 31.05.2011 в 17:00.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cтранное поведение viktod Общие вопросы Javascript 23 10.04.2010 00:37
Не логичное поведение скрипта, простой пример FRIE Общие вопросы Javascript 5 09.03.2010 12:43
Круговорт скрипта.... Karl Общие вопросы Javascript 1 17.10.2009 15:37
Блок переключения меню на JS, два скрипта в одном файле Dizeloid Элементы интерфейса 0 30.07.2009 12:03
Вызов скрипта в теле всплывающего окна на Javascript demchenko Я не знаю javascript 2 10.06.2009 10:46