Ver Mensaje Individual
  #14 (permalink)  
Antiguo 23/03/2010, 20:21
abcdefghi
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Más closest()

Cita:
Iniciado por Dany_s Ver Mensaje
y porqué no posteas la estructura de tu tabla y decinos que es lo que queres recuperar

porque hay varias formas pero siempre depende de la estrucutra, no es lo mismo usar parent para obtener un tr si antes del elemento que diste click hay un div
o parents(''tr) cuando hay varios tr anidados
Mi pregunta original y que me tuvo dando vuelta por varios días era acerca de closest(), por eso una vez develado el misterio uno reniega sólo para no abusar de los demás, de todas maneras lo he dejado para ver el fin de semana ya que el error que me presenta es minusculo, se los planteo simplemente por si alguno le sirve tambien el caso, bienvenido.

La tabla que tengo es esta:

Código HTML:
<table>
<tr removeclass="filter" class="filter">
      <td></td>
      <td><a class="button"><span>Disparar</span></a></td>
</tr>
<tr removeclass="filter" class="filter">
      <td></td>
      <td><a class="button"><span>Disparar</span></a></td>
</tr>
<tr removeclass="filter" class="filter">
      <td></td>
      <td><a class="button"><span>Disparar</span></a></td>
</tr>
</table> 
Quite lo que no es relevante para no confundirlos/cansarlos, el evento que dispara el cambio esta en el botón "disparar", la estructura en esa celda es la original, con el cambio de texto por supuesto.

Lo que necesito es que remueva la clase "filter" en cualquier elemento en que se encuentre la palabra "removeclass" siempre en sentido descendente desde <tr> hacia adelante hasta llegar a </tr>

Por lo que hago:

Código:
$('.button').click(function(){
        var b = $(this).closest('tr');

        $(b).find('*[removeclass]').each(function(){
                  $(this).removeClass($(this).attr('removeclass'));
        });
});
Yo pensaba equivocadamente que el problema era que closest() no incluia a tr, por lo que verán que el código anterior en realidad no realiza el cambio de "removeclass".

Sin embargo si hacen el problema no es en closest sino en find que empieza a recorrer el contenido buscando atributos pero no chequeando el elemento principal, en este caso <tr>.

Lo dejo planteado, por si alguno a tenido el problema, saludos.