Ver Mensaje Individual
  #17 (permalink)  
Antiguo 24/03/2010, 16:45
Dany_s
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Más closest()

Cita:
el problema no es en closest sino en find
problema no, hace lo que tiene que hacer jeje

find busca elementos desde el conjunto seleccionado para abajo, entonces ahí tenés 2 selecciones o 2 conjuntos, una del tr y otra de los elemtos que encontró find, entonces usas andSelf() que lo que haces es añadir a la seleccion todo lo que tenga la selección anterior a la actual y crear un solo conjunto

//primera selección el tr
$(this).closest('tr').
//Segunda selección todos los elemntos que tengan atributo 'removeclass'
find("*[removeclass]").
//Ahora andSelf se fija que la selección actual son los encontrados por find() y la anterior a esa es el closest('tr'), une a esas 2 y ahora hay un solo conjunto
andSelf().
//a todos esos le voy a eliminar la clase 'filter'
removeClass('filter');
//y termina no hace falta un each

Código HTML:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Prueba</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(function(){
        $('.button').click( function (){;
            $(this).closest('tr').find("*[removeclass]").andSelf().removeClass('filter');
        });
    });
    </script>
</head>
<style>
    table{border:1px}
    .filter {background-color:red}
    div.filter {background-color:blue}
    span.filter{background-color:green}
    .otro{background-color:yellow}
</style>
<body>

<table>
<tr removeclass="filter" class="filter">
      <td></td>
      <td><a class="button"><span  removeclass="filter" class="filter">Disparar (con remove y class)</span></a></td>
</tr>
<tr removeclass="filter" class="filter">
      <td><div removeclass="filter" class="filter">div con removeclass y  class filter</div></td>
      <td><a class="button"><span>Disparar</span></a></td>
</tr>
<tr removeclass="filter" class="filter">
      <td></td>
      <td><a class="button"><span class="otro">Disparar (no tiene class filter no borra fondo amarillo)</span></a></td>
</tr>
</table>

</body>
</html> 
probá y sacá andSelf() y vas a ver como elimina el fondo azul y verde peo NO el fondo rojo del tr