• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Schwieriges Ajax-jQuery-JScript Problem

flashspys

Mitglied
Ich habe 3 Verschiedene divs... Sagen wir mal div1, div2 und div3
Wenn ich auf div1 klicke wird eine ajax Abfrage gestartet und der inhalt in div2 reinlädt. Jetzt gibts es in div2 (der ja eben reingeladen wurde) einen link, der ebenfalls eine Ajaxabfrage macht und den inhalt in div3 reinlädt. in diesem div3 ist ein button bei dem eine simple anfrage an ein phpdokument geschickt wird. (Diese funktion übrigens wird beim laden von div2 mitgeschickt). Wenn ich (OHNE, DASS ICH DIE SEITE NEULADE) mehrmals durch den link in div1 das div2 neulade kommen die funktionen natürlich auch mehrmals an und werden in den (entschuldige wenn das nicht der richtige begriff ist) 'Eventhandler' geschoben.

Mein Problem: Drücke ich jetzt auf den Button in div3 wird nicht nur eine ajaxabfrage geschickt sondern natürlich mehrere (so oft, wie ich mein div2 neu geladen hab)

Meine Lösungsveruche: bei jedem seitenaufruf von div2
Code:
$('*').unbind();
anzuwende, was aber nicht hilft.
Ich sehe mit FireBug, dass (wahrscheinlich) Javascript folgendes tut:

meineseite.php/event/seq/1
meineseite.php/event/seq/2
usw. jenachdem wie oft ich div2 neu reinlade.

Meine Lösung: wäre ein Befehl, der entweder meineseite.php/event/seq/2 löscht.. Das wäre meine Lieblingslösung oder eine, die die neu reingeladene funktion unterdrückt/löscht, die beim reinladen in diesen 'Eventhandler' geschoben wird.

Falls alles nicht klappen würde, würde ich per JS verbieten das der Button in div3 mehrmals inherhalb von einer Sekunde (oder so) senden darf.


Ich bedanke mich, wenn ihr bis hier gelesen habt, und dann auch nochmal mehr, wenn ihr antwortet :)
 
Das klingt nach einer fehlerhaften Logik. Aber ohne den JS Code zu kennen, können wir dazu nichts sagen.
 
Wenn ich richtig verstanden habe, wird das Script für das binden immer im Ajax Teil mitgeschickt.
Sollte dies so sein so mach doch folgendes. (Hier als Beispiel mit div3)
Code:
$("#div3").unbind("click" ,callButton);
$("#div3").bind("click", Button");

Falls ein Event auf dem Element liegt wird es zunächst entfernt und falls kein Event da drauf liegt, wird auch kein Fehler geworfen. Danach wird das Event neu aufgelegt. Somit hast du immer nur einen Event Handler auf jedem Element. Hoffe das hilft dir :) Und mehrere Request auf einmal zu verhindern würde ich dir sowieso empfehlen. Ein ungeduldiger Benutzer wird dir sonst schon mal 20-30 Request reindrücken können :D
 
Zurück
Oben