2015-07-30 13 views
5

Attualmente sto lavorando su un carrello dinamico. Il processo è come questo: c'è una lista di elementi con la stessa classe, chiamata "cartElement". Quando l'utente fa clic su un elemento con questa classe, lo script riceve l'ID o l'ID del genitore se non ne ha uno (ciò è dovuto a tipi di elementi diversi) quindi lo invia a un'altra funzione.L'evento di clic Jquery su un elenco funziona in modo diverso in Firefox e altri browser

Ecco lo script:

$('.cartElement').click(function() { 
    var id; 
    if (event.target.id == '') 
     id = event.target.parentNode.id; 
    else 
     id = event.target.id; 
    cartRequest(id); 
}); 

Ecco un elemento HTML:

<div class="sub-addToCart float-lt"> 
    <button class="addToCart cartElement" id="webreseaux"> 
     <p class="float-lt">Je veux !</p> 
     <i class="icon-cart float-rt"></i> 
    </button> 
</div> 

Questo funziona perfettamente in tutti i browser tranne che per Firefox che emette nulla, nemmeno un errore. Ho provato ad aggiungere console.log in diversi punti per vedere dove si rompe. Ottengo un output console.log() prima dell'istruzione if(), ma non dopo. Qualche idea ?

+0

* Come nota a margine *, si dovrebbe avere un errore di console in FF per quanto riguarda 'event' beeing indefinito, quindi il tuo metodo di debug è sbagliato da qualche parte –

risposta

4

Firefox non utilizzare il modello evento globale, è necessario passare explecitely evento gestore di callback:

$('.cartElement').click(function(event){ //<<< pass 'event' here 
    /* .... */ 
}); 
+0

Grazie, ho imparato qualcosa. Raccomando di passare ogni volta l'argomento "evento" a causa di ciò? – Malcom

+0

Ya, dovresti passarlo ogni volta che vuoi utilizzare l'oggetto evento all'interno del gestore –

+0

@Malcom, contrassegnalo come risposta se questo funziona. (il segno di spunta a sinistra.) – RRK

Problemi correlati