Verwenden von jQuery replaceWith, um den Inhalt von DIV nur beim ersten Mal zu ersetzen

7

Ich verwende die folgende jQuery, um neue Daten zu ziehen und den Inhalt der DIV-Listendaten zu ersetzen

%Vor%

Das Skript wird durch zahlreiche Links auf der Seite ausgelöst, beispielsweise:

%Vor%

Aus irgendeinem Grund funktioniert das Skript nur beim ersten Klick eines Links. Nachfolgende Klicks aktualisieren die Daten nicht.

Ich habe verschiedene Korrekturen gesehen, aber nichts, was ich funktioniere. Irgendwelche Vorschläge?

    
Paul 14.02.2011, 17:27
quelle

4 Antworten

27

Es sieht so aus, als ob Ihr Problem darin besteht, replaceWith zu verwenden.

Sie entfernen das Element, das mit $('#listdata') übereinstimmt, beim ersten Aufruf von replaceWith , sodass nachfolgende Aktualisierungen nicht finden können, wo die Daten im Dokument platziert werden sollen.

Sie könnten etwas wie

ausprobieren %Vor%

oder so angekettet

%Vor%     
Sam Dufel 14.02.2011, 17:38
quelle
3

Wenn Sie replaceWith() verwenden, ersetzen Sie #listdata durch ein brandneues Element.

Wenn data nicht so etwas wie <div id="listdata"></div> ist, verschwindet #listdata nach replaceWith() . Ich denke, Sie sollten wahrscheinlich html() stattdessen verwenden.

    
Dominic Barnes 14.02.2011 17:39
quelle
0

Sie müssen die hrefs in Ihren Links zu & lt; a href="#" & gt; ... & lt; / a & gt; ändern. Dies verhindert, dass der Browser aktualisiert wird, wenn Sie auf den Link klicken.

Wenn Sie die Dinge auf diese Weise tun, sollten Sie am Ende des Click-Handlers ein "return false" anbringen, um Blasenbildung zu vermeiden.

    
Rui Jiang 14.02.2011 17:30
quelle
0

Versuchen Sie:

%Vor%

Wenn sich die .refresh -Anker im #listdata -Element befinden, ist die Delegierung eine optimierte Lösung:

%Vor%     
Šime Vidas 14.02.2011 17:29
quelle

Tags und Links