2011-01-04 14 views
5

Queste due funzioni dovrebbero essere attivate al caricamento e al ridimensionamento. Mi chiedo come scriverlo più compatto e bello. Qualche idea?Come posso scrivere questo frammento jQuery più bello

$(document).ready(function() { 
    fullScreen(); 
    footer(); 
    $(window).resize(function() { 
     fullScreen(); 
     footer(); 
    }); 
}); 

risposta

6

È possibile attivare l'evento resize subito dopo si registra il gestore:

$(document).ready(function() { 
    $(window).resize(function() { // Register handler. 
     fullScreen(); 
     footer(); 
    }).resize();     // Trigger event. 
}); 
+0

Oh che bello! –

+0

Oh sì, è questo! – Thomas

+0

Attivare un evento solo per chiamare la propria funzione è ... non ottimale per dirla in modo moderato. –

4

Beh, è ​​possibile combinare in una sola funzione, ma non sono sicuro che sia più "bello":

jQuery(function($) { 

    both(); 
    $(window).resize(both); 

    function both() { 
     fullScreen(); 
     footer(); 
    } 
}); 

lo fa affrontare la questione di non ripetere se stessi.

Off-topic: ho anche cambiato $(document).ready(function(){... in jQuery(function($){.... Fa la stessa cosa, ma rende il codice quotato compatibile con noConflict, se è utile. Se non vorrete mai noConflict compatibilità, è possibile utilizzare $(function(){... invece, ma hey, per sei caratteri in più ...

+0

questo è forse più ottimale, ma in questo caso preferisco la risposta più compatta di Frédéric Hamidi;) grazie. – Thomas

2
$(function() { 
    function both() { 
     fullScreen(); 
     footer(); 
    } 

    both(); 
    $(window).resize(both); 
}); 
0
$(document).ready(function() { 
     var doStuff = function() { 
      fullScreen(); 
      footer(); 
     }; 
     doStuff(); 

     $(window).resize(function() { 
      doStuff(); 
     }); 
    }); 
+1

Hai 2 bit di codice non necessari, perché scrivere una dichiarazione di funzione del genere e perché racchiudere una chiamata di funzione in una chiamata a una funzione anonima? –

1

@TJ La risposta di Crowder (chiamata ad un altro metodo) sembra essere una soluzione ideale.

la chiamata a un nuovo metodo di cattura l'intento delle chiamate a entrambi i metodi, il che rende funzionali.

Inoltre, se hai bisogno di cambiare che cosa fare sul carico o ridimensionare, necessario fornire in loco solo cambiare nel un metodo che rende mantenibile.

Un nome significativo ad es. readjustLayoutAfterResize che descrive l'intenzione lo rende leggibile .

Funzionale, manutenibile e leggibile è bello per me e sono sicuro che chiunque lo manterrà.

+1

Questa non è una risposta? Questo è un commento –

+0

Questo potrebbe essere un commento. Comunque è buono. –

+0

Ho pensato anche a @Marcus e @Tomalak, ma dal momento che contiene informazioni sul perché l'approccio potrebbe soddisfare i criteri di bellezza, sembra più utile come risposta piuttosto che un commento ristretto che non può essere espanso/letto. – StuperUser

Problemi correlati