molily: jQuery - onclick auf Nachgeladener Seite anwenden

Beitrag lesen

Nur wenn ich diesen Code auf einer Seite habe mit der Tabelle und diese Seite nicht nachgeladen wird, dann funktioniert es.

Was muss ich anders machen?

Du musst die Funktionsweise von jQuery verstehen. $("tr") sucht alle tr-Elemente, die gerade aktuelle im Dokument gefunden werden, und bei denen registriertst du dann mit .click einen Event-Handler.

Wenn du das Dokument nun änderst, indem du Code lädst und ihn ins Dokument reinschreibst, entstehen natürlich neue Elemente und der DOM-Baum wird geändert - diese neuen Elemente erhalten aber nicht automatisch Event-Handler. Dazu müsstest du obigen Befehl nach dem Nachladen via Ajax nochmal auf den eingefügten Teilbaum anwenden.

Was du willst: Alle tr-Elemente, sowohl die existenten, als auch die zukünftig irgendwann zum DOM hinzugefügten überwachen. Das geht ab jQuery 1.3 mit live(), für ältere jQuery-Versionen gibt es Plugins.

Im Grunde wird da "Event Delegation" gemacht, d.h. es wird gar nicht jedem einzelnen tr-Element ein Handler gegeben, sondern nur zentral einer registriert. Dann wird vom Event-Bubbling Gebrauch gemacht. Die click-Events steigen nämlich auf, sodass sie zentral bei einem höherliegenden Knoten verarbeitet werden können.

Mathias