JQuery: masquer tous les enfants, puis afficher un élément spécifique
Je veux cacher tous les éléments enfants dans un div. Et puis montrer un spécifique transmis à la fonction.
function subDisplay(name) {
$("#navSub").each(function() {
$(this).hide();
});
$(name).show();
}
Ensuite, j'appelle la fonction d'un événement onmouse comme: subDisplay(#DivIwantToShow);
Mais rien ne s'affiche...
Ce que je fais mal?
6 réponses
Vous devez cacher les enfants et non le div contenant.
$("#navSub").children().hide();
Alors maintenant, si le div que vous essayez de montrer est un élément dans le div parent, il affichera toujours pendant que les autres restent cachés.
Si vous ciblez les enfants de #navSub
, vous devez les cibler et les cacher , plutôt que l'élément navSub
; que vous pouvez faire en utilisant le children()
méthode;
function subDisplay(name) {
$('#navSub').children().hide();
$(name).show();
};
Sinon, il semble que vous ayez plusieurs éléments avec le même ID dans votre DOM, ce qui n'est pas autorisé.
Vous devez ensuite passer une chaîne (qui est un sélecteur jQuery valide) à subDisplay()
;
subDisplay('#DivIwantToShow');
, Pour résumer les grands commentaires de @dotweb et @Mat;
function subDisplay(name) {
$('#navSub').hide();
$(name).show();
}
subDisplay('#DivIwantToShow');
Si le nom de l'élément est passé dans name, utilisez ceci:
if($(this).attr('name') != name){
//Hide it
} else {
//show it
}
function subDisplay(name) {
$("#navSub").hide();
$('#'+name).show();
}
Essayez de l'avoir en dehors de la boucle, comme ceci:
function subDisplay(name) {
$("#navSub").hide();
$(name).show();
}