2010-12-05 10 views
3

je le code HTML suivant:Sélection d'un descendant en jQuery si j'ai une référence à un élément déjà

<table id="myTable"> 
    <tr> 
    <td><div>test</div></td> 
    </tr> 
    <tr> 
    <td><div>test</div></td> 
    </tr> 
</table> 

J'ai une référence à #myTable dans la $myTable variable.

Comment puis-je sélectionner toutes les étiquettes descendantes div sans utiliser à nouveau la chaîne #myTable (à savoir utiliser uniquement l'objet $myTable)?

Pour clarifier les choses, en supposant cet exemple travaillé:

$('#myTable div') 

... elle ne répond pas à mes critères, puisque je ne veux pas retaper #myTable.

De plus, je préfère ne pas avoir à spécifier chaque parent dans la hiérarchie comme ceci:

$myTable.children('tr').children('td').children('div') 

J'ai essayé d'utiliser

$myTable.children('div') 

... mais il semble sélectionner uniquement les enfants immédiats , que les éléments div ne sont pas.

Je veux utiliser quelque chose comme ceci laconique:

$myTable.descendants('div') 
+1

Vous avez une faute de frappe dans votre identifiant de table - le balisage ne doit pas inclure le signe '' n. – tvanfosson

Répondre

5

Vous pouvez utiliser la fonction find dans jQuery.

$myTable.find('div'); 

Sinon, vous pouvez spécifier la portée comme ceci:

$('div', $myTable); 

les deux doivent retourner les mêmes

4

La fonction find fait exactement ce que vous voulez.

$myTable.find('div');

1

Vous pourriez avoir du mal à tester les solutions proposées parce que vous avez inclus le « # » dans votre attribut id. Il devrait être:

<table id="myTable"> 

Et vous pouvez simplement utiliser $('div', $myTable) pour sélectionner les divs descendant.

Check out solution here

+0

Bien que cela soit vrai, il vaut la peine de noter que jQuery prend '$ ('div', $ myTable)' et appelle '$ ($ (myTable)). Find ('div')': "En interne, le contexte du sélecteur est implémenté la méthode .find(), donc $ ('span', this) est équivalent à $ (this) .find ('span'). " [Extrait de la référence de l'API] (http://api.jquery.com/jQuery/). –