2010-05-04 6 views
1

J'ai un gestionnaire d'événements qui a besoin de faire quelque chose à l'un de ses enfants, basé sur certaines données sauvegardées. Donc ce que je suis en train de faire quelque chose comme ceci:comment faire des sélecteurs complexes avec 'this' jquery

// Get the ID of 'this' 
item_id = $(this).attr('id'); 

// building a selector like $('#item1 .child_3') 
$('#' + item_id + ' .child_' + spVal).addClass('blah'); 

Mais cela semble un peu lourd. J'ai essayé:

$(this + ' .child_' + spVal).addClass('blah'); 

et cela ne fonctionne pas, ce qui ne me surprend pas vraiment. Y a-t-il une meilleure façon de le faire que le succès que j'ai décrit ci-dessus?

Répondre

4

Vous pouvez utiliser .find() (tout descendant), ou .children() (seuls les enfants directs), comme ceci:

$(this).find('.child_' + spVal).addClass('blah'); 

.find() est équivalent à ce que vous avez actuellement, .children() serait équivalent à ceci:

$('#' + item_id + ' > .child_' + spVal).addClass('blah'); 
+0

Je n'ai jamais eu la cause d'utiliser .Find avant - merci pour le nouveau jouet :-) – Stomped

2

Vous pouvez sélectionner les enfants comme celui-ci ainsi:

$(this).children('.child_' + spVal).addClass('blah'); 
Questions connexes