2013-02-15 2 views
0

Я пытаюсь синхронизировать зависание в двух таблицах diferente ... но по какой-то причине, когда работает только первая часть функции, добавление второй части ломает первую часть и не дает мне никаких ошибок.jQuery hover function

Я не помещал его в jsfiddle, потому что это не визуальная вещь ... ее чистый код, который где-то ломается.

$(function(){ 
    //first part 
     var trsCont = $('#conteudo table tr'); 
     for (i = 0; i < trsCont.length; i++) { 
      trsCont.eq(i).hover(
       function() { 
        $('#coluna_fixa table tr').eq(i-1).toggleClass("hovered"); 
        } 
       ); 
      } 
     //second part 
     var trsCol = $('#coluna_fixa table tr'); 
     for (i = 0; i < trsCol.length; i++) { 
      trsCol.eq(i).hover(
       function() { 
        $('#conteudo table tr').eq(i+1).toggleClass("hovered"); 
       } 
      ); 
     } 
}); 

Я знаю, что я делаю что-то неправильно ... может кто-то просто указать на это?

Спасибо, что прочитали это.

+0

Если взять первую часть из, делает вторую часть работы? – Andorbal

+2

Вы действительно не должны определять обработчики событий внутри циклов –

+1

... особенно циклы, в которых задействованы глобальные переменные итератора :-) – Pointy

ответ

3

Вы действительно не должны определять обработчики событий внутри циклов. Вместо этого вы должны сделать ваши функции при наведении курсора более общий характер, например, так:

//first part 
     $('#table1 tr').hover(
      function() { 
       var index = $(this).index(); 
       $("#table2 tr:eq(" + (index - 1) + ")").toggleClass("hovered"); 
      } 
     ); 
     //second part 
     $('#table2 tr').hover(
      function() { 
       var index = $(this).index(); 
       $("#table1 tr:eq(" + (index + 1) + ")").toggleClass("hovered"); 
      } 
     ); 

Проверить эту JSFiddle для примера: http://jsfiddle.net/cAEWR/2/

+0

Проблема в логической необходимости. Мне нужно вызвать событие зависания в таблице 2 Tr (X-1), когда отображается таблица 1 Tx (X). – MBarni

+0

@MBarni Ах, я не заметил этого из исходного кода. Позвольте мне изменить на JS Fiddle –

+0

И наоборот, тоже должно произойти. – MBarni