webentwicklung-frage-antwort-db.com.de

JQuery: Alle untergeordneten Elemente ausblenden und dann ein bestimmtes Element anzeigen

Ich möchte alle untergeordneten Elemente in einem div ausblenden. Und dann zeigen Sie eine bestimmte an die Funktion weitergegeben.

function subDisplay(name) {
   $("#navSub").each(function() {
      $(this).hide();
   });
   $(name).show();
}

dann rufe ich die funktion von einem onmouse event wie folgt auf: subDisplay(#DivIwantToShow); aber es wird nichts angezeigt ...

Was mache ich falsch?

35

Sie müssen die Kinder verstecken und nicht das übergeordnete div.

$("#navSub").children().hide();

Wenn also das Div, das Sie anzeigen möchten, ein Element im übergeordneten Div ist, wird es weiterhin angezeigt, während die anderen ausgeblendet bleiben.

77
Brandon Kindred

Wenn Sie die Kinder von #navSub Anvisieren, müssen Sie sie anvisieren und ausblenden und nicht das Element navSub; das können Sie mit der children() Methode machen;

function subDisplay(name) {
    $('#navSub').children().hide();
    $(name).show();
};

Andernfalls haben Sie anscheinend mehrere Elemente mit derselben ID in Ihrem DOM, was nicht zulässig ist.

Sie müssen dann einen String (der ein gültiger jQuery-Selektor ist) an subDisplay() übergeben.

subDisplay('#DivIwantToShow');
3
Matt

Um die großartigen Kommentare von @dotweb und @Matt zusammenzufassen;

function subDisplay(name) {
   $('#navSub').hide();
   $(name).show();
}

subDisplay('#DivIwantToShow');
1
Stefan

wenn der Name des Elements als Name übergeben wird, verwenden Sie Folgendes:

    if($(this).attr('name') != name){
    //Hide it
    } else {
   //show it
}
1
Teun Pronk
function subDisplay(name) {
   $("#navSub").hide();
   $('#'+name).show();
}
0
kaz

Versuchen Sie es außerhalb der Schleife, wie folgt:

function subDisplay(name) {

     $("#navSub").hide();

     $(name).show();
}

http://jsfiddle.net/peduarte/m2pj8/

0
peduarte