2012-09-16 2 views
1

Je suis sûr que quelqu'un va changer mon titre, mais je l'ai aimé pendant que ça durait.

Quoi qu'il en soit, que fait le Hector (comme le dirait mon fils de sept ans)?

$('#id').find('> a')... 

BTW, je reçois que $('#parent > .child') est le même que $('#parent').children('.child') (comme expliqué here), pas que je l'utilise jamais.

Répondre

3

L'utilisation de > a sans parent spécifié est en réalité une syntaxe obsolète, car comme vous l'avez découvert, sa sémantique est ambiguë. .find('> a') est en fait équivalent à .children('a').

De http://api.jquery.com/child-selector/

Note: Le sélecteur $("> elem", context) sera dépréciée dans une version future. Son utilisation est donc déconseillée au lieu d'utiliser des sélecteurs alternatifs.

[Se souvenant que $(sel, context) est équivalent à $(context).find(sel)]

+0

Merci. Je vais accepter quand il est temps :) – Nick

+0

Vous devez probablement mettre à jour votre réponse à la lumière de la discussion ci-dessous pour montrer qu'il est équivalent à .children pas .find :) – Nick

+0

@Nick strictement la réponse ci-dessus est toujours 100% correct - '.find ('> a')' est actuellement équivalent à '.children ('a')'. Mon commentaire dans la réponse supprimée de Nelson était incorrect, cependant. AIUI ce qu'ils prévoient de déprécier est _any_ l'utilisation d'un sélecteur qui commence '"> ... "'. – Alnitak

1

.find() est généralement utilisé pour sélectionner les descendants de nombreux niveaux bas, cependant, dans votre cas, en ajoutant la > avant la a limite la sélection aux enfants seulement (ou premier niveau seulement si vous utilisez la classe CSS à la place de #id).

Il est essentiellement le même que $('#id > a') ou $('#id').children('a') mais avec un appel de fonction supplémentaire.

Votre titre est parfait, :) BTW

+0

Oui, vous avez raison :) Je viens de découvrir cela par essais et erreurs, et je suis revenu à noter autant, à savoir qu'il est équivalent à '.children()' pas '.find()'. Heureux que tu aimes le titre :) – Nick

1

Pendant que vous essayez de trouver un élément en utilisant ci-dessous requête

$("#master").find('> a')

il trouvera tout le premier élément d'ancrage de niveau à l'intérieur de l'élément qui a attribut id « maître » =

Et pendant que vous essayez de trouver un élément en utilisant ci-dessous requête

$("#master").find('a')

alors il trouvera tout l'élément d'ancrage à l'intérieur de l'élément qui a l'attribut id = 'master' peu importe à quel niveau.

+0

Oui, donc j'ai découvert. Merci :) – Nick