Ho un modulo di verifica che utilizza php per caricare alcuni javascript & html in #Div-A
quando la pagina viene caricata. Il javascript associa un evento click a #Button-A
nello stesso div. Qualcosa di simile a questo:jQuery trigger trigger clic due volte
<div id="#Div-A"><input type="button" id="Button-A"/>
<script type="text/javascript">
$('#Button-A').bind('click', function() {
$.ajax({
type: 'get',
url: 'some/url/gets/called',
success: function() { this happens on success }
});
});</script>
</div>
seguito, #Global-Button
è creato e una funzione JavaScript si lega un diverso evento click a questo secondo pulsante che poi innesca #Button-A
di essere cliccato in questo modo:
$('#Global-Button').live('click', function(event) {
$("#Button-A").trigger("click");
})
Il motivo è che il contenuto di #Div-A
può cambiare (tramite ajax), quindi il secondo pulsante agisce come un trigger globale indipendentemente da quale pulsante o funzione risiede in #Div-A
.
Il problema che sto incontrando è che per qualche motivo se # Global-pulsante viene cliccato dopo pagina carico #Button-A
viene attivato due volte . Se un evento Ajax ricarica il contenuto di # Div-A, tutto va bene e l'attivazione avviene una sola volta come dovrebbe.
Ho esaminato l'html entro #Div-A
prima e dopo il ricaricamento tramite Ajax e tutto sembra identico. Non ci sono sicuramente pulsanti o funzioni duplicati da nessuna parte, per quanto posso vedere, causerebbe l'attivazione di due eventi.
So solo molto poco del DOM e posso solo supporre che questo abbia qualcosa a che fare con l'ordine in cui le cose sono caricate e gli eventi sono vincolati.
Grazie. Il secondo bit $ ('# Button-A'). Unbind ('click'). Bind ('click', function() {ha fatto il trucco. Si scopre che il riposizionamento del pulsante usando appendTo() stava creando il bind duplicato.Mi chiedo se c'è un modo per evitare questo quando si mescolano gli elementi intorno a – billynoah
C'è anche un'altra opzione, è possibile avere un risultato non singolo nella query. Per esempio l'ho incontrato quando ho lavorato con le checkbox: frameworks genera 'input' nascosti, e mentre supponevo che' input [name = "myname"] 'fosse univoco, non era vero. –