2010-07-24 3 views
3

Est-il possible d'utiliser un :selector avec les éléments suivants dans jQuery?

$('.galler_attr').bind('click', function() { 
    $(this:first-child).css('color', 'red'); 
     }); 
+0

Je ne suis pas sûr si vous cherchez le premier enfant de l'élément cliqué ou si vous voulez vérifier si l'élément cliqué est le premier enfant de son parent. Pouvez-vous clarifier s'il vous plaît? –

Répondre

14

Non. Vous essayez de mélanger le contexte de la fonction avec une chaîne.

Utilisez this comme context du sélecteur ou appelez find() sur $(this) pour rechercher dans le champ DOM de l'élément. Soit

$('.galler_attr').bind('click', function() { 
    $(this).find(':first-child').css('color', 'red'); 
}); 

ou ce (qui décide de ce qui précède en interne):

$('.galler_attr').bind('click', function() { 
    $(':first-child', this).css('color', 'red'); 
}); 
+0

thx beaucoup, très utile !! – hoerf

0

dans ce cas, utilisez .is()

$('.galler_attr').bind('click', function() { 
    $(this).is(':first-child').css('color', 'red'); 
    // this would change the color to red if the clicked element is a first-child.... 
}); 

Je me demande pourquoi lie pas seulement à la de première enfant directement?

$('.galler_attr:first-child').bind('click', function() { 
    // this would bind click event to the first-child element... 
    $(this).css('color', 'red'); 

}); 
1

Oui, vous pouvez l'utiliser mais pas de cette manière. Vous pouvez le mettre comme Russ dit.

$('.galler_attr').bind('click', function() { 
    $(this).find(':first-child').css('color', 'red'); 
}); 

Vous pouvez obtenir une meilleure aide pour de tels problèmes en allant sur www.visualjquery.com. C'est joli.