2010-04-07 19 views
13

El escenario es Tengo dos div s: uno es donde selecciono elementos (divResults) y va al siguiente div (divSelectedContacts). Cuando lo selecciono, coloco una marca al lado. Lo que quiero hacer es cuando lo seleccione de nuevo Quiero eliminar la marca y también eliminar el elemento de divSelectedContacts.

Aquí está el código:

$("#divResults li").click(function() 
{ 
    if ($(this).find('span').size() == 1) 
    { 
     var copyElement = $(this).children().clone(); 
     $(this).children().prepend("<span class='ui-icon ui-icon-check checked' style='float:left'></span>"); 
     $("#divSelectedContacts").append(copyElement); 
    } else 
    { 
     var deleteElement = $(this).find('span'); //here is the problem how to find the first span and delete it 
     $(deleteElement).remove(); 
     var copyElement = $(this).children().clone();//get the child element 
     $("#divSelectedContacts").find(copyElement).remove(); //remove that element by finding it 
    } 
}); 

No sé cómo seleccionar la primera span en un li usando $(this). Cualquier ayuda es muy apreciada.

Respuesta

26

varias maneras:

$(this).find('span:first'); 

$(this).find(':first-child'); 

$(this).find('span').eq(0); 

Tenga en cuenta que no es necesario utilizar $(deleteElement) como deleteElement ya existe un objeto jQuery . Así que usted puede hacerlo de esta manera:

$(this).find('span:first').remove(); 
+0

muchas gracias :-). El deleteElement no se me ocurrió. Buena atrapada. – Raja

5

Para obtener el primer hijo de $(this) uso esto:

$(this).find(":first-child"); 
5

o que sólo se ponían todo en el selector ...

$('span:first', this); 
+0

¡Me gusta, bueno! – Gabe

+0

sweet Me gusta esta implementación. +1 para ti. – Raja

Cuestiones relacionadas