Kleine Ajax-Frage

01/12/2012 17:27 PseudoPsycho#1
Hi!
Also, es ist so, dass wenn man Ajax verwendet (oder auf andere Art die innerHTML-Methode verwendet), man HTML nachladen kann.
Dieses HTML ist dann aber "unabhängig" vom Rest des Dokuments.
Sprich: Funktionen, die in der Datei definiert und vom Nachgeladenen aufgerufen werden sollen, funktionieren nicht. Ebenso wirkt sich das CSS des Headbereichs nicht auf den nachgeladenen Content aus.

Nun lade ich jedoch eine Seite über Ajax nach und in einem davon befindet sich ein Formular, welches ich über (wer hätte damit gerechnet) Ajax versenden möchte. Da ich jQuery nutze, wird es nicht möglich sein, einfach alles in den Eventhandler zu schreiben...

Gibt es da irgendeine Möglichkeit? Wäre sehr dankbar!
01/14/2012 11:44 sava#2
Lad einfach alle CSS und JS dateien im Hauptdokument, die Styles werden dann auch angewendet, egal ob mit oder ohne Ajax geladen.
01/14/2012 13:13 PseudoPsycho#3
Quote:
Originally Posted by sava View Post
Lad einfach alle CSS und JS dateien im Hauptdokument, die Styles werden dann auch angewendet, egal ob mit oder ohne Ajax geladen.
Genau das habe ich doch gemacht...?
01/16/2012 01:08 Fratyr#4
Wenn du mit jQuery ein Event für ein Node Element anlegen möchtest, das erst
später ins Dokument geladen wird, dan musst du anstelle von $('.bla').click( .. );
jQuerys live Methode verwenden.
PHP Code:
$('.bla').live('click', function () {
  ...
}); 
01/16/2012 12:21 PseudoPsycho#5
Nee, so meine ich das garnicht...

Also, Datei1 beinhaltet den <script>-Tag mit
function test(){...}
und ruft über $.ajax(...) nun Datei2 auf und packt den Inhalt in ein Div.

In Datei2 ist z.B. ein Button mit onClick="test();"
und das funktioniert nicht. Schreibe ich den Inhalt von Datei2 direkt in den Quelltext des Divs, schon.
01/16/2012 12:40 Fratyr#6
Mich würde mal interessieren was die Fehlerkonsole dazu sagt, vielleicht hast du auch einfach nur
einen Fehler in deinem Script.
01/16/2012 13:32 PseudoPsycho#7
Nee, hab keinen Fehler...
Das Problem hatte ich schon bei seehr vielen selbstgebastelten Webseiten und Firebug meldet auch keine Fehler.
01/16/2012 14:03 Fratyr#8
Wenn du deine Funktion innerhalb von jQuerys read funktion
PHP Code:
$(document).ready(function () {
   function 
test () {
     ...
   }
}); 
Kann es sein das die Funktion nur Lokal und nicht Global verwendet werden kann.
Probiere doch mal deine Funktion so zu definieren:
PHP Code:
$(document).ready(function () {
   
window.test = function () {
     ..
   }
} 
test = function () müsste eigentlich auch ausreichen, nur sicherheitshalber.
Ansonsten bin ich hier auch mit meinem Latein am Ende, eine Möglichkeit
wäre es die Dateien hochzuladen dan könnte man dir evtl. auch besser
helfen da du dein Problem auch ziemlich unverständlich geschildert hast.

Quote:
Da ich jQuery nutze, wird es nicht möglich sein, einfach alles in den Eventhandler zu schreiben...
Doch kannst du, der Callback parameter muss nicht umbedingt eine Anonyme Funktion sei, du kannst also anstelle
von
PHP Code:
$('*').click(function () {}); 
auch eine beliebige Funktion verwenden
PHP Code:
$('*').click(test); 
01/16/2012 15:48 PseudoPsycho#9
Quote:
Da ich jQuery nutze, wird es nicht möglich sein, einfach alles in den Eventhandler zu schreiben...
Damit war gemeint, dass in der neugeladenen Datei überhaupt keine Funktionen etwas nützen, auch nicht die von jQuery und ich schlecht die gesamte Bibliothek nochmal in den Eventhandler schreiben kann onClick="jquery...."?
01/16/2012 16:16 Fratyr#10
Naja wiegesagt, alles was ich dir noch anbieten kann ist deine Dateien hochzuladen.
01/16/2012 17:04 PseudoPsycho#11
Danke für die Hilfe-Versuche,
habe inzwischen 'nen Fix im Netz gefunden... ;)