2015-07-30 7 views
5

Ich arbeite derzeit an einem dynamischen Warenkorb. Der Prozess ist wie folgt: Es gibt eine Liste von Elementen mit der gleichen Klasse, genannt "cartElement". Wenn der Benutzer auf ein Element mit dieser Klasse klickt, erhält das Skript seine ID oder die ID seines übergeordneten Elements, wenn es keine hat (dies liegt an unterschiedlichen Elementtypen), und sendet es dann an eine andere Funktion. HierJquery Klick-Ereignis auf einer Liste funktioniert anders in Firefox und anderen Browsern

ist das Skript:

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

Hier ist ein HTML-Element:

<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> 

Das funktioniert perfekt in jedem Browser außer für Firefox, die nichts gibt, nicht einmal einen Fehler. Ich habe versucht, console.log an verschiedenen Stellen hinzuzufügen, um zu sehen, wo es bricht. Ich bekomme eine console.log() Ausgabe vor der if() Anweisung, aber nicht danach. Irgendeine Idee ?

+0

* Als Randnotiz *, sollten Sie eine Konsole Fehler in FF haben in Bezug auf 'event' beeing undefiniert, so dass deine Debugging-Methode irgendwo falsch ist –

Antwort

4

Firefox verwendet keine globale Event-Modell, müssen Sie es explecitely zum Event Callback-Handler übergeben:

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

Danke, ich habe etwas gelernt. Empfiehlst du, das 'event' Argument jedesmal deswegen zu übergeben? – Malcom

+0

Ja, Sie sollten es jedes Mal übergeben, wenn Sie Event-Objekt in Handler verwenden möchten –

+0

@Malcom bitte markieren Sie dies als die Antwort, wenn dies funktioniert. (das Häkchen links.) – RRK

Verwandte Themen