2015-07-30 16 views
5

Obecnie pracuję nad dynamicznym wózkiem. Proces wygląda następująco: Istnieje lista elementów z tą samą klasą, zwanych "cartElement". Gdy użytkownik kliknie jeden element z tą klasą, skrypt otrzymuje identyfikator lub identyfikator rodzica, jeśli go nie ma (wynika to z różnych typów elementów), a następnie wysyła go do innej funkcji.Zdarzenie kliknięcia Jquery na liście działa inaczej w przeglądarce Firefox i innych przeglądarkach.

Oto scenariusz:

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

Oto jeden element 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> 

Działa to doskonale w każdej przeglądarce z wyjątkiem Firefox, która wyprowadza nic, nawet błąd. Próbowałem dodać console.log w różnych punktach, aby zobaczyć, gdzie się zepsuje. Dostaję wyjście console.log() przed instrukcją if(), ale nie po nim. Dowolny pomysł ?

+0

* Jako strona Uwaga *, trzeba mieć błąd w FF dotyczącą konsoli 'event' Beeing undefined, więc twoja metoda debugowania jest gdzieś w błędzie –

Odpowiedz

4

Firefox nie korzysta z globalnego modelu zdarzeń, trzeba przejść go explecitely do obsługi zdarzeń callback:

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

Dziękuję, nauczyłem się czegoś. Czy za każdym razem radzisz przekazać argument "zdarzenia"? – Malcom

+0

Ya, powinieneś przekazać go za każdym razem, gdy chcesz użyć obiektu zdarzenia wewnątrz handler'a –

+0

@Malcom zaznacz to jako odpowiedź, jeśli to działa. (zaznacz po lewej stronie) – RRK

Powiązane problemy