7
votes

Cacher tous les éléments sauf un div et son élément enfant

Comment cacher tous les éléments sauf un div et son élément enfant en utilisant jQuery?


2 commentaires

Cela dépend de l'endroit où la cible

est située dans le balisage HTML.


Peut-être qu'une question plus détaillée serait utile de répondre


4 Réponses :


7
votes

Ignore ça, ne semble pas avoir l'effet souhaité.

peut-être ce qui suit? grève> p> xxx pré>

p>

Mise à jour forte> p>

Le problème est que l'état visible d'un enfant divisait souvent sur son parent est visible. Donc, vous devez avoir un arbre entier à la DIV que vous souhaitez rester visible. P>

Vous devez tout cacher de cet arbre, l'astuce identifie tous les enfants de la structure DOM qui ne sont pas dans la DIV Ascendance, et tous les frères et sœurs de ceux qui sont. p>

enfin! strong> p>

réussi à écrire une solution. Essayé une approche récursive au début, mais sur des pages compliquées, elle est morte avec "Trop de récursions", a donc écrit une version à base de liste qui fonctionne très bien. Il se présente sous la forme d'un plugin JQuery à une seule fonction, comme cela semble être l'approche la plus utile. P> xxx pré>

Cette routine trouve tous les éléments du contexte / Code> (quel paramètre par défaut à code>) qui excluent l'objet et ses ancêtres. P>

Cela permettrait de résultat de la question suivante: P>

target.parentsUntil(context).andSelf().siblings();


3 commentaires

Ça faisait? HMM, doit être particulier à ce cas. En général, il n'est pas infaillible.


Probablement parce que #mydiv était un enfant direct de corps . Si tel est le cas, vous pouvez le raccourcir comme celui-ci $ («Corps»: non (#mydiv) '). Masquer (); . J'ai ajouté une réponse qui fonctionne pour des éléments imbriqués.


@Patrick J'ai ajouté votre réponse après le mien, afin que quiconque lisait ne sautera pas pour l'essayer! Peut-être bien que les gens voient le code illustrant les méthodes impliquées à AnyRate.



4
votes

Ceci fera $ (". mydivclass"). pas (this) .hide ();

mydivclass est la classe donnée à toutes les DIV doit être masqué

mise à jour: xxx

cachera tous les éléments enfants à l'intérieur .MyDivClass


4 commentaires

Et si mydivclass n'a pas mentionné qu'un seul maindiv avec des éléments et d'autres div .. alors comment se cacher.


@Rafee, je suis un peu confus ... Pouvez-vous expliquer un peu plus


Voulez-vous cacher tous les éléments enfants dans un MAINDIV et ce MAINDIV a du texte et d'autres champs d'entrée et d'autres autres divs.


@Mattis évidemment que cela ne fonctionnera pas: si vous cachez le parent de .MyDivClass, alors .MyDivClass sera aussi caché ...



13
votes

Pour cibler un élément imbriqué et assurez-vous qu'il est le seul montrant, vous auriez besoin de cacher ses frères et sœurs, ainsi que les frères et sœurs de tous ses ancêtres jusqu'au .

Exemple: http://jsfiddle.net/patrick_dw/gsxya/1/ xxx


edit: la solution que j'ai ajoutée ci-dessus est un peu plus concise. < / p>

exemple: http://jsfiddle.net/patrick_dw/gsxya / xxx


4 commentaires

LOL, votre code génère la même sortie que mon bloc tout-puissant ci-dessus, ne connaissait pas .parentsuntil () .


@Orbling - Parfois, une méthode fait toute la différence dans le monde. : o) Je viens de simplifier le mien un peu en utilisant . et) .


@ user113716 n'est pas la païensneul («corps») la même chose que les parents ()?


+1 Ces besoins ont été modifiés plus loin si vous utilisez plusieurs sélecteurs, mais cela fonctionne sinon génial.



1
votes

Solution simple: cacher tout puis montrer celui-ci (dans ce cas le second div et ses enfants).

$('.create-account').children().hide();
$('.create-account>div:nth-of-type(2)').show();


0 commentaires