Fondamentalmente, voglio usare una classe per selezionare gli elementi per ricevere ascoltatori di eventi di selezione delegati. Ma voglio rimuovere la classe immediatamente dopo.
Questo è quello che avevo in mente:
docSelector // $(window.document)
.on("click touchstart", btnSelector, click[name])
.queue(function() {
// remove class to prevent extra binding
$(btnSelector).removeClass(btnSelector);
});
Penso che dovrebbe essere chiaro quello che sto cercando di fare, ma non sono sicuro queue
funziona anche per questo genere di cose. Non ho molta familiarità con jQuery, ma sto lavorando sul codice di qualcun altro che lo usa liberamente. Grazie in anticipo.
In altre parole, suppongo di cercare un metodo generico per affrontare una callback alla fine della catena.
risposte:
1 per risposta № 1queue
la funzione dipende da dequeue
chiamata. Se hai bisogno di rimuovere la classe ASAP, dovresti farlo nella specifica click[name]
gestore di funzioni.
Anche jQuery: più di un gestore per lo stesso evento
I gestori verranno eseguiti nell'ordine in cui sono stati associati.
Poiché il modello di eventi jQuery consente più gestori su un elemento, pertanto un gestore successivo non sostituisce un gestore precedente.
Potresti fare qualcosa come:
docSelector // $(window.document)
//Is executed first
.on("click touchstart", btnSelector, function(){
// remove class to prevent extra binding
var classSel = ".jc-click-" + name;
$(classSel).removeClass(classSel);
})
//Is executed just after
.on("click touchstart", btnSelector, click[name]);