2012-03-15 14 views
7

Tengo una tabla y sé cómo buscar siguiente y anterior TD, pero ¿cómo hacerlo en el siguiente y anterior TR?jQuery encuentra la misma td en prev. y la siguiente fila

012 
345 <- example, I clicked on 4, it checks 3 and 5, but how to check on 0,1,2 and 6,7,8? 
678 
$(document).ready(function() { 
    $("td").click(function() { 

     var x = $(this).next().css('backgroundColor'); 
     var y = $(this).prev().css('backgroundColor'); 

     if (x == 'rgb(255, 0, 0)' || y == 'rgb(255, 0, 0)') { 
      return; 
     } else { 
      $(this).css('backgroundColor', 'red'); 
     } 
    }); 
}); 
+0

su html se trunca – DG3

+0

no estoy seguro pero trate '$ (this) .parent() prev()' – MilkyWayJoe

Respuesta

10

hice algunas investigaciones y se le ocurrió una solución de trabajo que funciona. Gracias a todos por la ayuda:.

$(this).parent().next().find('td').eq($(this).index()-1).css('backgroundColor'); 
+0

Cuidado, esto no funcionará como se espera si 'rowspan' o' colspan' se está utilizando en cualquier 'tr/td' que venga antes que el que está buscando. –

+0

Ese '-1' es incorrecto porque ambos [' .eq() '] (https://api.jquery.com/eq/) y [' .index() '] (https: //api.jquery. com/index /) están basados ​​en 0. –

2

la salida .parent() en jQuery ..

método
4

Uso parent() en td para ir a tr y entonces usted puede utilizar prev() o next() en consecuencia.

$(document).ready(function() { 
    $("td").click(function() { 

     var $tr = $(this).parent();//this will give the tr 
     $tr.prev();//previous tr 
     $tr.next();//next tr 

     //To get the corresponding td's in the next and prev rows 
     var tdIndex = $(this).index(); 

     $tr.prev().find("td:not(:eq(" + tdIndex + "))"); 
     $tr.next().find("td:not(:eq(" + tdIndex + "))"); 

    }); 
}); 
+0

sí, ya sé cómo encontrar la siguiente y anterior. fila, pero ¿cómo puedo verificar la misma posición de clic hacia arriba y hacia abajo? Ese es el problema real. '$ (this) .parent (' tr '). next(). (this) .css (' backgroundColor ');' no funciona, soy nuevo en jQuery, aún no lo entiendo tan bien. Necesito la misma posición de clic en las otras filas. – Slavak

+0

'$ (this) .parent ('tr'). Next(). (This) .css ('backgroundColor')' es incorrecto. – ShankarSangoli

+0

¿Desea encontrar la td correspondiente en las filas previas y siguientes? – ShankarSangoli

3

Algo así como $(this).closest('tr').next('tr').find('td') le dará todas las <td> s dentro de la fila después de la que contiene la <td> su evento disparó contra.

2
$(this).parent('tr').next() 

y

$(this).parent('tr').prev() 
Cuestiones relacionadas