Je veux masquer tous les éléments enfants dans un div. Ensuite, montrez-en une spécifique transmise à la fonction.
function subDisplay(name) {
$("#navSub").each(function() {
$(this).hide();
});
$(name).show();
}
alors j'appelle la fonction à partir d'un événement onmouse comme: subDisplay(#DivIwantToShow);
Mais rien ne s'affiche ...
Qu'est-ce que je fais mal?
Vous devez masquer les enfants et non le div contenant.
$("#navSub").children().hide();
Alors maintenant, si le div que vous essayez de montrer est un élément du div parent, il apparaîtra quand les autres resteront cachés.
Si vous ciblez les enfants de #navSub
, Vous devez les cibler et les masquer , plutôt que l'élément navSub
; ce que vous pouvez faire en utilisant la méthode children()
;
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 excellents commentaires de @dotweb et @Matt;
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();
}