Foros del Web » Programando para Internet » Jquery »

Seleccionar el siguiente <td> dentro de un <tr>

Estas en el tema de Seleccionar el siguiente <td> dentro de un <tr> en el foro de Jquery en Foros del Web. Tengo un $(".verLlamadas").click que es un <tr>. Lo que quiero es modificar el primer td dentro del siguiente tr. Desde $(this).next() cojo el tr pero ...
  #1 (permalink)  
Antiguo 19/02/2013, 11:04
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 7 meses
Puntos: 58
Seleccionar el siguiente <td> dentro de un <tr>

Tengo un $(".verLlamadas").click que es un <tr>.

Lo que quiero es modificar el primer td dentro del siguiente tr.
Desde $(this).next() cojo el tr pero no se como llegar al td. He probado varias formas pero no hay manera.

Gracias!
  #2 (permalink)  
Antiguo 19/02/2013, 12:21
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 12 años, 2 meses
Puntos: 36
Respuesta: Seleccionar el siguiente <td> dentro de un <tr>

Código Javascript:
Ver original
  1. $(this).next().children('td:first');

ó

Código Javascript:
Ver original
  1. $(this).next().children('td').first();

Prueba con eso

Saludos
  #3 (permalink)  
Antiguo 20/02/2013, 02:52
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 7 meses
Puntos: 58
Respuesta: Seleccionar el siguiente <td> dentro de un <tr>

Nada no logro que funcione. Dejo más detalles por si estoy haciendo algo mal:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.         $(document).ready(function() { 
  3.             //Función para mostrar las pestañas
  4.             $(function() {
  5.                 $( "#tabs" ).tabs();
  6.             });    
  7.             //Función para mostrar las llamadas de un cliente
  8.             $(".verLlamadas").click(function () {                  
  9.                 var clacli = $(this).next().attr("clacli"); //Esto si que funciona y es el TR cuyo primer TD quiero cambiar. Pero quería hacerlo sin clase                                     
  10.                 $(this).next().fadeToggle("slow");                 
  11.                                 $.ajax({
  12.                     type: 'POST',
  13.                     url: './ajax/devuelveEfectos.php',
  14.                     data: clacli,
  15.                     success: function(data) {
  16.                         //$(this).next().children('td:first').html(data); //Este no funciona, ni el otro
  17.                         $("."+clacli).html(data); //Sólo conseguí que funcionara poniendo una clase al td
  18.                     }
  19.                 })                                 
  20.                 return false; //Esto no se para qué sirve. Creo que si falla Ajax devuelve false
  21.             });
  22.         });                
  23.     </script>

Luego el HTML tiene esta pinta:
Código HTML:
Ver original
  1.     <theader>
  2.          <th>id</th><th>codigo</th><th>nombre</th>
  3.     </theader>
  4.     <tr class='verLlamadas'>
  5.          <td>4567</td><td>4567</td><td>Usuario de prueba</td>
  6.      </tr>
  7.      <tr class='trEfectos' id='4567'>
  8.          <td colspan='3' class='13766'></td>
  9.      </tr>


He tenido que poner el con el id del cliente al elemento o no soy capaz de acceder de la otra forma. Pero como hay varias pestañas puede que el ID se repita así que prefería hacerlo de la otra forma.

Puede que el problema sea que dentro de la funcion ajax el this haga referencia a ajax y no al elemento this que fue el que pulso el evento?

Efectivamente lo he arreglado guardando una referencia al elemento antes de la funcion Ajax:
Código Javascript:
Ver original
  1. var elemento = $(this).next().children("td");

Pero me gustaría saber si hay alguna otra solución.

Última edición por alyciashape; 20/02/2013 a las 02:58

Etiquetas: siguiente
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:18.