Con la delega degli eventi in jQuery 1.6, è possibile rispondere agli eventi che sono diventati un genitore comune.ambito variabile delegazione evento jQuery con chiamate consecutive
Un esempio di implementazione è come questo:
(function($){
$.fn.myeventhandler = function() {
return this.delegate('a.next, a.prev', 'click customEvent', function (event) {
var target=$(event.target);
var bar = null;
if('click' == event.type) { /*~[ call this 'a' ]~*/
// handle the click event
$('#next-element').animate({width:'200px'},1300,function(){
bar = 'value1';
$('#next-element').animate({width:'100px'},1300,function(){
bar = 'value2';
console.log(bar);
});
});
} else if('customEvent' == event.type) { /*~[ call this 'b' ]~*/
// handle the customEvent event
$('#my-element').animate({height:'200px'},1300,function(){
bar = 'my-event1';
console.log(bar);
});
}
return false;
});
}
})(jQuery);
Questo tipo di struttura può funzionare davvero bene quando si hanno molti evento attiva si desidera avere legato in una pagina. Tuttavia, ho notato un comportamento curioso e mi sono chiesto se qualcuno potesse illuminarmi nell'ambito di seguito:
Se si definisce una variabile 'var bar;
' prima di 'a' e la si utilizza in 'a' e 'a' richiede molto tempo per essere eseguito, quindi se "clic" viene attivato una seconda volta, la variabile "bar" verrà riassegnata al valore o ne verrà creata una nuova?
Il motivo della domanda è che ho un'animazione 'incompiuta' in cui l'animazione richiede 1,3 secondi per essere completata. Se si attivano due eventi di clic consecutivi, la destinazione e il tipo sono impostati correttamente, ma la seconda animazione sembra influenzare la prima e i due ambiti sembrano disponibili l'uno con l'altro.
Non ho ancora terminato l'animazione, quindi non ho un set funzionante da mettere online in jsFiddle, ma qui c'è una regola empirica per l'ambito che dovrei ricercare o una spiegazione più chiara dello scope disponibile qualcuno potrebbe aver trovato?
EDIT: In quanto sopra, ho aggiunto in una situazione simile a quella che sto usando. Nel caso semplificato sopra, il valore di 'bar' mantiene ancora il valore atteso su 2 chiamate consecutive, ma nel caso più complicato sto lavorando (ancora), a meno che non abbia passato specificatamente i parametri nella funzione di callback, ci sia ancora una condizione che consente a due chiamate consecutive di modificare il valore del parametro in modo che la richiamata visualizzi un valore creato da una chiamata successiva, non il valore impostato logicamente nella propria chiamata attivata. Se qualcuno può replicare questo effetto su un esempio semplificato, lo apprezzerei. Sto riducendo le mie funzioni per provare a produrre un jsFiddle che lo replica.
Grazie, AE
Cosa c'è 'a'? ? ? –
Ciao, Interstellar_Coder, 'a' nei commenti si riferisce al primo blocco di codice if() e 'b' si riferisce al blocco di codice 'else' - scusa se i commenti non sono di aiuto - qual è un buon esempio per illustrarlo meglio ? – MyStream