Das JQuery-Klickereignis funktioniert nach der Klassenänderung nicht ordnungsgemäß

7

Ich habe ein ähnliches JQuery-Skript:

%Vor%

Mein Problem ist, dass der Link nach dem Ändern der Klasse immer noch auf das Klickereignis der alten Klasse verweist. Gibt es eine Möglichkeit der Wiedervereinigung? Oder mache ich das auf eine schlechte Art?

    
Undefined 24.11.2011, 18:08
quelle

5 Antworten

11

Sie können dies beide Funktionen in 1:

verwenden %Vor%

Siehe toggleClass und Live Funktion

  

.toggleClass (Klassenname)   className Ein oder mehrere Klassennamen (durch Leerzeichen getrennt), die für jedes Element in der übereinstimmenden Gruppe umgeschaltet werden sollen.

Bearbeiten Sie für neue jQuery-Versionen 1.6.4 +

Da die Funktion live nicht mehr existiert, hier ein Ersatz:

%Vor%     
Niels 24.11.2011, 18:10
quelle
8

Das Problem ist, dass jQuery funktioniert, indem es Elemente auswählt (das macht $('.follow_link') ) und dann einen Event-Handler an diese -Elemente bindet (das ist .click*function(){ ). Es spielt keine Rolle, wenn sich die Klasse ändert.

Javascript hat eine Funktion namens Event-Bubbling. Dies bedeutet, dass Vorfahrenelemente über Ereignisse auf ihren Nachkommen benachrichtigt werden. Dies bedeutet, dass Sie Selektoren testen können, wenn das Ereignis eintritt, anstatt auf Dokument bereit.

jQuery macht das mit der Funktion on einfach:

%Vor%

Beachten Sie, dass diese Funktion in jQuery 1.7 eingeführt wurde. Um Kompatibilität mit früheren Versionen zu gewährleisten, verwenden Sie delegate .

    
lonesomeday 24.11.2011 18:13
quelle
1

Es wäre besser, jedem der Links eine dritte Klasse zu geben, die angibt, dass sie Teil einer Gruppe sind. So etwas wie a_link :

%Vor%     
Jasper 24.11.2011 18:12
quelle
1

Hinweis: Ich hatte gerade dieses Problem, selbst wenn die Funktion on() immer noch das Problem in JQuery 1.10,

hat

Eigentlich habe ich das Problem gelöst, indem ich ersetzt habe:

%Vor%

Nach

%Vor%     
Guillaume Renoult 05.05.2014 00:46
quelle
0

Versuchen Sie:

%Vor%

edit: Niels Lösung ist viel schöner.

    
Marc B 24.11.2011 18:12
quelle

Tags und Links