jQuery - Das Ereignis 'on' funktioniert nicht nach jQuery.replaceWith

8

Ich möchte einen Link wie diesen haben: Wenn es angeklickt wird, ändert es sich in Text, wenn Maus aus dem Text herauskommt, kehrt es zum Link zurück.

HTML:

%Vor%

JS:

%Vor%

Der Code funktioniert nur beim ersten Mal. Scheint, dass $("a").on("click",function(){}) nach replaceWith nicht funktioniert.

Geige: Ссылка

Ich verwende jQuery 1.10.1 und testete sowohl FF als auch Chrome. Bitte helfen.

    
andyf 03.10.2013, 01:19
quelle

3 Antworten

12

Ersetzen

%Vor%

von

%Vor%

Damit können Sie delegierte Ereignisse verwenden. Auf diese Weise wird Ihr Handler zukünftige Ankerelemente anwenden, die erstellt werden könnten. Dies ist die Voraussetzung dafür, dass Sie den Anker aus dem Dokument entfernen, wenn Sie replaceWith

ausführen

DEMO

Weitere Details zu delegierten Ereignissen hier (siehe Abschnitt "Direkte und delegierte Ereignisse")

    
Claudio Redi 03.10.2013, 01:26
quelle
3

Das jQuery "on" funktioniert, aber weil es ein Link ist, also, wenn Sie darauf klicken, wird es zu einem anderen Ort verlinkt.

Hier ist eine Geige: Ссылка

Ein anderer Grund könnte sein, dass Ihr Code $ replace.replaceWith ($ lnk) verwendet, weil $ lnk das ist. Es bedeutet also, dass es immer noch denselben Text und Link verwendet.

Hier ist der Code:

%Vor%

});

    
joydesigner 03.10.2013 01:35
quelle
1

Wenn das Dokument ursprünglich geladen wird, wird Ihr a -Tag für einen Klick angesehen. Aber wenn das a -Tag durch ein neues ersetzt wird, sieht es nicht mehr das neue Tag.

Ich würde empfehlen, ein div um Ihren Link zu setzen und jQuery für alle Linkklicks innerhalb des div zu beobachten. Wie in meinem Beispiel gezeigt.

HTML

%Vor%

jQuery

%Vor%

Ссылка

    
Trevor 03.10.2013 01:33
quelle

Tags und Links