2012-01-05 16 views
28

Quiero ocultar todos los elementos secundarios en un div. Y luego muestre uno específico transferido a la función.Jquery: Ocultar todos los elementos secundarios, luego mostrar un elemento específico

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

entonces llama a la función de un evento onmouse como: subDisplay(#DivIwantToShow); Pero no se muestra nada ...

¿Qué estoy haciendo mal?

+3

lo que se pasa en 'name'? ¿Es un objeto jQuery, o un selector? Además, al mirar tu código, parece que tienes más de un '# navSub', que es HTML ilegal, solo puedes tener un ID único en la página, usa clases en su lugar. – Bojangles

+0

¿Estás literalmente llamando 'subDisplay (#DivIwantToShow);'? –

+3

Necesita 'subDisplay ('# DivIwantToShow');' - es una cadena que pasa allí –

Respuesta

61

Necesita ocultar los elementos secundarios y no los elementos que contienen div.

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

Así que ahora si el div que está tratando de mostrar es un elemento en el div padre seguirá mostrando mientras que los otros permanecen ocultos.

+0

Esto es increíble ... –

0
function subDisplay(name) { 
    $("#navSub").hide(); 
    $('#'+name).show(); 
} 
1

para resumir los grandes comentarios de @dotweb y @ Matt;

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

subDisplay('#DivIwantToShow'); 
3

Si usted está apuntando a los hijos de #navSub, es necesario dirigirse a ellos y ocultar ellos, en lugar del elemento de navSub; que puedes hacer usando el método children();

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

De lo contrario, parece que tienes múltiples elementos con el mismo ID en su DOM, que no está permitido.

Luego debe pasar una cadena (que es un selector jQuery válido) a subDisplay();

subDisplay('#DivIwantToShow'); 
0

si el nombre del elemento se pasa en el uso de este nombre:

if($(this).attr('name') != name){ 
    //Hide it 
    } else { 
    //show it 
} 
Cuestiones relacionadas