jQuery geht live()!
jQuery ist ja so schon toll. In Rails Projekten dank jRails sehr einfach verwendbar, da auch Funktionen wie "link_to_remote" weiter wie gewohnt genutzt werden können. Um unobtrusive zu sein, sollte man dabei aber auf genau diese verzichten und möglichst jedwede JavaScript Funktionalität auslagern, was mit jQuery meist auch Spaß macht.
Das große ABER war bisher: Manipuliert man (beispielsweise in einer RJS Antwort) die Seite und fügt so z.B. einer Liste ein Element hinzu, gilt die ausgelagerte Funktionalität dafür nicht, sie müsste auf das hinzugefügte Element erneut angewandt werden. Das ist nun vorbei! Seit Version 1.3 biete jQuery eine neue Event Methode an: live()
Beispiel:
$("form input[type=text]").live("click", function(){ alert($(this).val()); });
Der so hinzugefügte click-Handler gilt nun für alle Elemente, auf die der Selector "form input[type=text]" zutrifft, egal wann sie (ggf. auf erst später durch JavaScript) entstanden sind. Phantastisch, oder?