2011-02-16 2 views
2

En voici un rapide. J'essaie de m'améliorer en écrivant des sélecteurs pour jquery parce que je semble beaucoup trop compter sur les boucles pour faire avancer les choses.Sélection des derniers éléments enfants d'un div sans bouclage

Dans cet exemple particulier, je souhaite ajouter la classe "Absolute" à toutes les divs qui ont la classe ganttview-block-container sauf la dernière dans la div ganntview-blocks parente.

HTML:

<div class='ganttview-blocks'>  
<div class='ganttview-block-container'></div> 
<div class='ganttview-block-container'></div> 
<div class='ganttview-block-container'></div>  
</div> 

<div class='ganttview-blocks'>  
<div class='ganttview-block-container'></div> 
<div class='ganttview-block-container'></div> 
<div class='ganttview-block-container'></div> 
</div> 

Javascript:

$("div.ganttview-block-container").addClass("Absolute").addClass("Opacity"); 

$($("div.ganttview-blocks")).each(function() { 
    var thisDiv = $(this); 
    thisDiv.children("div.ganttview-block-container:last").removeClass("Absolute");  
}); 

Mon javascript/jquery accomplit correctement cet objectif, mais il semble si inefficace. Je suis confiant qu'il y a une façon plus élégante d'y arriver ... peut-être même en 1 ligne.

Quelqu'un peut-il aider? Merci!

+0

double possible: http://stackoverflow.com/questions/543513/getting-last-child-of-div – Hello71

+0

double possible: http: // stackoverflow.com/questions/3768641/selecting-the-last-child – Hello71

+0

J'ai jeté un coup d'oeil à ces questions avant de poster mais ils n'ont pas répondu à ce que je cherchais spécifiquement. – Robodude

Répondre

5

Je pense que vous avez besoin :not avec :last-child:

$('.ganttview-block-container') 
    .addClass('Opacity') 
    .filter(':not(:last-child)') 
    .addClass('Absolute'); 
+0

Génial! C'est le genre de choses que je cherchais. Je dois devenir plus à l'aise en utilisant: pas et en apprendre plus sur les autres options ':'. – Robodude

+1

@Robodude Jetez un coup d'œil à [la référence de l'API] (http://api.jquery.com/category/selectors/) pour les débutants. – lonesomeday

+0

Merci pour le lien! Ça ira! – Robodude

0

pourquoi pas seulement

$("div.ganttview-blocks div.ganttview-block-container:last").each(...) 

Ce devrait vous obtenir les éléments de votre après.

Questions connexes