Compte tenu de ce balisage d'échantillon (en supposant un nombre aléatoire d'éléments entre i peut configurer jQuery à sélectionner les divs externes et internes comme tels: p> fonctionne bien. P> Cependant, disons que je veux permettre une nidification illimitée de cette logique , donc je peux avoir ceci: p> dans cette situation, lors de la sélection de div A via J'aimerais avoir des rayons de l'extérieur et des internes contenus dans leur niveau de nidification. J'espère Mise à jour: p> Je pense que quelque chose comme ça pourrait fonctionner, mais pas sûr de la manière dont on peut (ou si c'est permis) de référence 'this' Sélecteur: P> .outer code> et
.inner code>:
.outer code> je veux correspondre à celui de div b. Dans d'autres mots, je veux exclure les ancêtres d'un p> p>
.filter () code> pourrait le retirer, mais je ne peux pas penser à un sélecteur qui fonctionnerait universellement pour des motifs imbriqués illimités. Est-ce que c'est faisable à l'aide d'un filtre? Ou peut-être même un sélecteur direct? P>
var $outer = $('.outer');
var $inner = $outer.find('.inner').filter(function(){
$(this).each(function(){
return $(this).closest('.outer') == $outer;
});
});
6 Réponses :
$('.outer').children('.inner'); That would select any inner that sits immediately below an outer. I'm not really clear on which div you're trying to select for. Is it a, b, c, or d? Having something called outer nested within something called inner doesn't make a whole lot of sense. Maybe if you could provide a more specific example?
+1 - Ceci est probablement le meilleur pari en supposant que le .inner code> est toujours un enfant direct du
.outer code> et non imbriqué un autre niveau en bas ...
Désolé de ne pas clarifier cela. C'est en effet une variable. Intérieur sera un descendant, mais pas nécessairement un enfant immédiat.
Vous pouvez utiliser une magie CSS:
$('.outer>.inner')
Ce sélecteur correspondra à la fois .inner code>
Si le Si vous avez besoin de quelque chose qui semble encore plus profond, vous pouvez faire quelque chose comme ceci: p> Jsfiddle Demo P> P> .inner code> sont toujours directs enfants de
.outer code> s -
Enfants () Code>
est probablement votre meilleur choix (réponse de JasongetsDown)
@gnarf ... Je pense que c'est proche de ce que je pensais aussi. J'ai ajouté une mise à jour de mon message qui utilise également une fonction de filtrage. Le mien ne fonctionne pas, je vais essayer votre syntaxe Suivant!
Au fait, +1 une heure d'heure, nice. Je suis sûr que vous êtes correct, cela semble être la bonne logique.
Si vous supposez correctement, vous voulez sélectionner tous les mis à jour après le test sur OP Exemple HTML à http://jsfiddle.net/cewbt/1/ p> p> .inner code> qui est sous un
.ouvert code>, sauf s'il y a un
.outer code> inbetween, Peut-être que le suivi fonctionnera (non testé):
Votre hypothèse est correcte. Cependant, cet échantillon ne fonctionnera pas. Je me cache d'abord "extérieur", puis veut trouver tous les notes qui ne sont pas un enfant d'un extérieur imbriqué. La capture est que mon extérieur caché est i> un .outer alors serait donc excluant lui-même.
Voici une autre option. Supposons que vous ayez le .outer code>
o code>, cela sélectionnera tout
interne code> S sous IT:
o.find('.inner').not(o.find('.outer .inner'))
Brillant! Comme d'habitude, la réponse est plus simple que le chemin que je finis à descendre. Je me débattais avec la syntaxe nécessaire pour combiner un objet mis en cache avec un sélecteur CSS et la logique de recherche () ne me survient pas. Merci!
Merci! Au fait, la question est très intéressante et stimulante, il a fallu beaucoup de travail pour se rendre à cette ligne simple ...
Belle optimisation, souhaite que j'y pensais d'abord :) - était de jouer avec l'utilité de . non () code>
hier pour cette réponse .
Pourquoi avez-vous besoin de trouver des expositions au début? Pourquoi ne pas regarder juste à l'étranger et ensuite obtenir le plus proche extérieur? Voir mon commentaire aussi
Hé, cette question me qualifie pour l'argent jQuery code> badge!
Il trouve juste votre réponse à être génial que =)
@Kobi - Grats - Je suis assis jolie fermer moi-même - comme on le voit sur Odata :)
Je me demande pourquoi ne pas sélectionner .inner code> au début, puis obtenir
le plus proche code>
.outer code>?
$inner = $('.inner');
$outer = $inner.closest('.outer');
La question ici est dans l'autre sens. Donné un i> extérieur code>, comment trouvez-vous son
interne code> divs?
voir. Ma question est pourquoi ne pas aller d'autre direction. Avoir donné le .ouvert, la réponse de Kobi fonctionne parfaitement. Mais si vous avez juste besoin d'obtenir tous les Inners pour tous les expositions - que vous puissiez commencer à partir de zéro pour dire
Cela n'a pas de sens - même si vous faites correspondre le premier nid et que vous ne supprimez que - ses enfants seraient enlevés de toute façon