2010-04-07 18 views
13

Lo scenario è che ho due div s: uno è dove seleziono gli articoli (divResults) e va al div successivo (divSelectedContacts). Quando lo seleziono, metto un segno di spunta accanto ad esso. Quello che voglio fare è quando lo seleziono di nuovo Voglio rimuovere il segno di spunta e rimuovere anche l'elemento da divSelectedContacts.

Ecco il codice:

$("#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 
    } 
}); 

non so come selezionare il primo span in un li utilizzando $(this). Ogni aiuto è molto apprezzato.

risposta

26

Diversi modi:

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

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

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

Si noti che non è necessario utilizzare $(deleteElement) come deleteElement è già un oggetto jQuery . Così si può fare in questo modo:

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

Grazie mille :-). Il deleteElement non mi è venuto in mente. Buona pesca. – Raja

5

per ottenere il primo bambino di $(this) uso questo:

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

o si può solo buttare tutto nel selettore ...

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

Mi piace, bello! – Gabe

+0

dolce mi piace questa implementazione. +1 per te. – Raja

Problemi correlati