on
può essere utilizzato per cablare gli eventi di ridimensionamento e pronto come qualsiasi altro evento.
Quindi per il vostro caso, è possibile creare una funzione che ha il codice che si desidera accadere per resize
e ready
, per poi passarlo a entrambe le chiamate a on
.
Se si desidera mantenere l'ambito racchiude pulita, si potrebbe fare tutto questo in una funzione immediata esecuzione:
(function() {
function stuffForResizeAndReady(){
// Stuff in here happens on ready and resize.
}
$(window).on("resize", stuffForResizeAndReady);
$(document).on("ready", stuffForResizeAndReady);
})();
2012-07-25: Ci sono 2 differenze di essere a conoscenza di quando si utilizza .on()
per fissare i gestori pronti:
gestori pronti aggiunti tramite $(fn)
e $(document).ready(fn)
sono "retro-fired", mentre quelli aggiunti da .on()
non lo sono. Usando quelli, se aggiungi un gestore dopo che il DOM è già stato caricato, il comando fn verrà attivato immediatamente. Se si aggiunge un gestore tramite .on('ready', fn)
dopo il DOM è stato caricato, sarà non essere licenziato da jQuery, ma è possibile manualmente .trigger('ready')
esso.
Quando si utilizza $(fn)
o $(document).ready(fn)
per aggiungere un gestore pronto, il fn riceve jQuery come il suo primo arg, permettendo al familar jQuery(function($){ })
utilizzo. Se si utilizza $(document).on('ready', fn)
, il primo argomento che riceve fn è uno event object. In entrambi i casi this
all'interno del fn è il document
. Se si dovesse fare qualcosa di anormale come $('#foo').on('ready', fn)
allo scopo di triggerare, this
sarebbe l'elemento #foo
.
fonte
2012-01-23 17:43:27
'on' è un sostituto di' bind', 'live' e' delegate', ma non dei metodi di stenografia. Se chiedi per curiosità, va bene, ma non devi cambiare il tuo codice per usare '.on'. –
@FelixKling Mi piacerebbe capire il modo più veloce. – ryanve
@FelixKling e sì, anche solo curiosi. – ryanve