2013-05-24 8 views
9

Ho una domanda molto veloce che dovrebbe essere una risposta facile.Impostazione di un div da visualizzare: nessuno; usando javascript o jQuery

Ho un menu di navigazione mobile che utilizza jQuery per "approfondire" i livelli del menu. Ogni volta che viene caricato un livello, jQuery determina l'altezza del menu e lo imposta di conseguenza.

Sto usando il seguente script su un pulsante per attivare o disattivare mostrare e nascondere il menu principale in base alla pagina corrente:

<script type="text/javascript"> 
    (function ($) { 
     $("a.BNnavTrigger").click(function (event) { 
      event.preventDefault(); 
      $("div.drill-down-wrapper").slideToggle("9000"); 
     }); 
    })(jQuery);  
</script> 

Affinché il menu per avviare "chiuso" in alcune pagine, lo so che devo dare il valore css di display:none; al div contenente. Funziona tutto bene con un piccolo problema.

Quando inizialmente nascondo il menu, il plugin del menu drilldown jQuery rileva che è nascosto e imposta l'altezza del menu su 0px. Quando si attiva il menu in una pagina in cui il menu era inizialmente nascosto, tutti gli altri contenuti del riquadro si attivano correttamente, ma il menu stesso è bloccato a un'altezza pari a 0.

Nel mio cervello, la risposta ovvia a questo problema sarebbe quella di nascondere il menu contenente div, tramite javascript, dopo che il menu è stato caricato ed è impostata l'altezza. Questo suono è corretto?

Qualcuno potrebbe fornirmi un piccolo script per farlo? Sono un noob completo e completo con js. Qualcun altro ha una raccomandazione diversa su come gestire questo problema?

Grazie per il vostro tempo! Alex

AGGIORNAMENTO!

JS violino per il problema qui:http://jsfiddle.net/fyyG2/17/ *

+0

Puoi allegare file html come bene? – Edward

+0

Questo è tutto molto bello, ma non dovresti mostrarci come stai caricando questo menu e impostando la sua altezza, se dovessimo essere in grado di aiutarti con quella parte? – adeneo

+0

@Edward - Ho aggiunto l'html che sto usando per il menu –

risposta

10

Su documento pronto fare $("#yourId").hide();.

Ad esempio:

$(document).ready(function() { 

    $("div.drill-down-wrapper").hide(); 
    var $drillDown = $("#drilldown"); 

     // (what ever your code is) 
}); 
+0

Puoi mostrarmi cosa intendi con questo nel mio jsFiddle? Grazie .. Sono abbastanza noob a js/jquery –

+0

$ (documento) .ready (function() { $ ("div.drill-down-wrapper"). Hide(); \t \t var $ drillDown = $ ("#drilldown"); ........ (qual è il tuo codice) }); – Ani

+0

Perfetto. Il menu si carica, quindi si nasconde. Attiva o disattiva le ripetizioni. Grazie. –

13

provare in questo modo:

$("#yourId").css("display","none"); 

dovrebbe funzionare esso!

Spero che aiuti.

+0

Grazie per questo suggerimento kiko-lp. Sfortunatamente, anche quando nascondo il menu tramite JS dopo il caricamento della pagina, il menu rileva ancora che è nascosto e si dà un valore di altezza pari a 0. Non sono a conoscenza di alcun modo per ritardare questo script in modo da impostare l'altezza del menu primo. –

+0

Ho creato un jsFiddle per questo problema. Controlla! http://jsfiddle.net/fyyG2/17/ –

2

Aggiunta visualizzazione valore css: nessuno nel file css funziona correttamente. http://jsfiddle.net/dxkX6/4/

ma posso vedere che avete un errore di battitura nel file HTML:

$("a.BNnavTrigger").click(function (event) { 
    ^

<a class="BNavTrigger">Toggle Menu</a> 
     ^

è che forse il motivo per cui si verifica il problema?

+0

L'errore di battitura era nel trasferimento del codice html a questa pagina, ma a destra, funziona perfettamente. Il problema è che il jquery utilizzato dal plugin acquistato richiede di essere visibile inizialmente per poter calcolare correttamente l'altezza. –

+0

Ho creato un jsFiddle per questo problema. Controlla! http://jsfiddle.net/fyyG2/17/ –

1

non sono sicuro che sono pienamente capito il tuo problema, ma qui è un pensiero:

Impostare l'opacità di ciò che si desidera nascondere a 0, invece di cambiare la sua dimensione/nasconderlo.In questo modo si manterrà le sue dimensioni, ma non sarà visibile agli utenti:

$('#id').css('opacity',0); 

E per Ri-mostra l'elemento:

$('#id').css('opacity',1); 
+0

Grazie per il pensiero Israele.Sto cercando di attivare il menu utilizzando slideToggle in modo da poter nascondere il menu sui browser mobili. Significa che ho bisogno che anche le dimensioni dell'altezza cambino con l'interruttore. Ho creato un jsFiddle per mostrare di cosa sto parlando qui: ho creato un jsFiddle per questo problema. Controlla! http://jsfiddle.net/fyyG2/17/ –

Problemi correlati