2012-08-28 2 views
6

Sto utilizzando l'ultimo Bootstrap di Twitter. Vorrei eseguire una determinata funzione JS (mostrando una descrizione del comando una volta) quando la larghezza della mia finestra è inferiore a 980px (come sapete, su questa dimensione Bootstrap modifica Navbar e nasconde le voci del menu standard) - la finestra va da 768 a 979, per essere breve . So cheBootstrap: progettazione responsabile - esecuzione di JS quando la finestra viene ridimensionata da 980px a 979px

@media (min-width: 768px) and (max-width: 979px) {...} 

questa opzione può essere utilizzata per catturare l'evento. Tuttavia, può essere utilizzato solo per la modifica degli stili escono come

body {background-color:#ccc;} 

e ho bisogno di lanciare JS-funzione, oppure aggiungere o rimuovere uno stile specifico per l'elemento. Ho provato:

<script> 
    window.onresize = function() { 
     if (window.outerWidth == 980) {alert('');} 
    }; 
</script> 

ma questa soluzione è così lento, e anche pende una finestra del browser. Quindi, c'è qualche soluzione per prendere questo evento, quando la finestra viene ridimensionata a 979px dal lato GREATER ed eseguire una funzione JS?

Grazie a tutti!

+0

Perché è la soluzione lento, non l'evento licenziato troppo spesso per quanto tempo ha bisogno il tuo gestore? Se è così, puoi provare qualcosa come Underscore.js's ['debounce()'] (http://underscorejs.org/#debounce) per eseguire il gestore una volta che la finestra ha finito il ridimensionamento. (Supponendo che tu non abbia davvero bisogno che i cambiamenti siano completamente omogenei.) – millimoose

+0

beh, in effetti non ha funzionato nemmeno per me - non sono riuscito a ottenere un avviso quando la finestra era 980. E ho bisogno di ottenere un avviso SOLO nel caso in cui la finestra viene ridimensionata dal 980 al 979. Non viceversa :) – f1nn

+0

Irregolarità della domanda, +1 per inventare una nuova parola che sembra che dovrebbe esistere. – Stickley

risposta

5

outerWidth è un metodo in modo che ti manca ():

if (window.outerWidth() == 980) 

In ogni caso, se si sta utilizzando jQuery:

$(window).resize(function() { 
    if ($(this).width() < 981) { 
    //do something 
    } 
}); 
+0

Inserito nel corpo - non funziona. Dovrebbe avvisare solo una volta quando la finestra viene ridimensionata dal 980 al 979 (non dal 978 al 979 o dal 979 al 980). jQ è caricato. – f1nn

+0

è molto più veloce non utilizzare oggetti jQuery quando possibile. puoi usare 'document.width' per trovare la larghezza del documento – MrOBrian

+0

Anche provato a includere il tuo codice per document.ready - stesso risultato (( – f1nn