Ho un'app ajax che eseguirà funzioni su ogni interazione. Mi piacerebbe essere in grado di eseguire la mia funzione di installazione ogni volta in modo che tutto il mio codice di installazione per quella funzione rimane incapsulato. Tuttavia, elementi vincolanti più di una volta significa che il gestore verrà eseguito più di una volta, il che è ovviamente indesiderabile. C'è un modo elegante in jQuery per chiamare il bind su un elemento più di una volta senza che il gestore venga chiamato più di una volta?In jQuery, esiste un modo per associare solo un clic una volta?
risposta
Si potrebbe collegare l'evento per document
con la funzione one()
:
$(document).one('click', function(e) {
// initialization here
});
Una volta eseguito, questo gestore di eventi viene rimossa in modo che non verrà eseguito di nuovo. Tuttavia, se hai bisogno dell'inizializzazione per eseguire prima dello l'evento click di qualche altro elemento, dovremo pensare a qualcos'altro. L'utilizzo di mousedown
invece di click
potrebbe funzionare in seguito, poiché l'evento Mousedown viene generato prima dell'evento click.
User jQuery one
funzione come Tom ha detto, ma separare il gestore ogni volta prima di legare nuovamente. Aiuta ad avere il gestore di eventi assegnato a una variabile rispetto all'utilizzo di una funzione anonima.
var handler = function(e) { // stuff };
$('#element').unbind('click', handler).one('click', handler);
//elsewhere
$('#element').unbind('click', handler).one('click', handler);
Si può anche fare .unbind('click')
per rimuovere tutti i gestori di click allegati a un elemento.
La risposta di Chetan Sastry è ciò che desideri. Fondamentalmente basta chiamare $ (elemento) .unbind (evento); prima di ogni evento.
Quindi, se si dispone di una funzione come loadAllButtonClicks() che contiene tutti i metodi
$(element).on("click", function(){});
per ciascun pulsante sulla tua pagina, e si esegue che ogni volta che un tasto è scattato, questa sarà ovviamente produrre più di un evento per ogni pulsante. Per risolvere questo problema è sufficiente aggiungere
$(element).unbind(event);
prima di ogni
$(element).on("click", function(){});
e sarà separare tutti gli eventi a quell'elemento, poi aggiungere l'evento uno scatto.
Puoi anche usare .off() se unbind non fa il trucco. Assicurarsi che il selettore e l'evento dato a .OFF corrispondono esattamente a quelli inizialmente previsti per .ON():
$("div.selector").off("click", "a.another_selector");
$("div.selector").on("click", "a.another_selector", function(e){
Questo è ciò che ha funzionato per me per risolvere lo stesso problema ajax ricaricare.
Mi piace perché $ (elemento) .unbind (evento); soluzione rimuoverà tutti gli eventi del tipo (ad es. fare clic) dall'elemento, mentre questo metodo rimuove solo quello correlato al selettore in questione e lascia gli altri allegati anche se condividono lo stesso tipo di evento. –
- 1. jQuery - Solo una volta
- 2. jQuery Aggiungi classe su clic ma solo una volta.
- 3. come associare a sfocare e modificare, ma solo attivare una funzione una volta in Jquery/Javascript?
- 4. prima unbind clic e quindi associare (jQuery)
- 5. jQuery perché: hover funziona solo una volta?
- 6. sed per cambiare stringa in un file solo una volta
- 7. JQuery evento click funziona solo una volta
- 8. Sostituire un elemento in un elenco solo una volta - Haskell
- 9. C'è un modo per associare a Keyboard.FocusedElement?
- 10. Esiste un modo per eseguire un progetto UWP Xamarin senza distribuire ogni volta
- 11. Attivare un evento solo una volta?
- 12. Disabilitare un pulsante una volta fatto clic in Angular2
- 13. jQuery - gruppo o concatenare jquery oggetti creati da un ciclo, in modo da usare appendTo solo una volta
- 14. jQuery previene altri eventi dopo un clic
- 15. jquery ui finestra di dialogo si apre solo una volta
- 16. Jquery: Aggiungi div una volta sola 'su clic'
- 17. Esiste una richiamata o un altro modo per eseguire una funzione dopo che jQuery mmenu ha terminato l'attivazione del plugin?
- 18. Esiste un modo migliore per evitare l'esecuzione del processo più di una volta in Oracle?
- 19. Flex: esiste un modo per associare l'elemento selezionato di ComboBox a una variabile?
- 20. UICollectionView: esiste un modo per ricaricare solo le viste supplementari?
- 21. SQL Selezionare per visualizzare un valore solo una volta
- 22. Solo un thread alla volta!
- 23. jQuery, chiamando una richiamata solo una volta dopo più animazioni
- 24. Esiste un modo standard per suggerire che un numero debba essere letto un carattere alla volta?
- 25. modo efficiente di avere una funzione di eseguire solo una volta in un ciclo
- 26. Associare una funzione su più elementi in una sola volta jQuery
- 27. Esiste un modo elegante per elaborare un flusso in blocchi?
- 28. Pulsante jQuery clic su aggiornamento di jqGrid che si attiva solo una volta
- 29. dojo.dnd un articolo alla volta solo
- 30. Come associare, slegare e riassociare eventi (clic) in JQuery
Ti manca un ');' lì. – Ben
Oh grazie Ben, fissando ... –
Non sapevo di questo. – DMin