Kiedy kliknę na index.html w tego DIV’a to AJAX załaduje mi w jego miejsce DIV z pliku dynamic.html, ale kiedy kliknę w tego nowo załadowanego div’a to już nic się nie stanie, a chciałbym, aby plik js działał także dla tych dynamiczne wczytanych treści. Mógłbym go dodać w pliku dynamic.html za pomocą znacznika
To da się jakoś zrobić bo np. facebook, który doładowuje starsze posty w trakcie przewijania strony ma działające skrypty dla całości.
Powyższe Ci nie działa, ponieważ zdarzenie ‘click’ dotyczy się początkowego DIV. Funkcją .html(ret) nadpisujesz całą jego zawartość, w tym i przypisane zdarzenie ‘click’ - ot i całe wyjaśnienie tego problemu.
Teraz możesz:
po załadowaniu DIVa znów przypisać mu zdarzenie ‘click’;
stworzyć dwa DIV’y - jeden zewnętrzny, do którego przypisujesz raz ‘click’, i drugi wewnętrzny, do którego wczytujesz zmienną treść.
EDIT: zauważyłem teraz, że Ty nową treść wczytujesz do całego body, czyli podmieniasz zawartość strony, więc pkt. 2 odpada w tym przypadku. Jeśli tak musisz mieć, to we wczytywanych stronach też musisz umieścić analogiczny kod JS jaki masz na stronie index.html
Tylko podmiana całej strony dokumentu w ten sposób jest moim zdaniem bez sensu - to już prościej linka zrobić do przeładowania strony (odpowiednio ostylowanego w CSS).
Nie podmieniam całego body - chciałem tylko jak najbardziej uprościć przykład
Czyli nie da się robić tego tak, żeby umieścić kod w pliku i wczytać go tylko na początku w sekcji head? Muszę go po prostu dołożyć do pliku, który jest ładowany AJAXem, tak?
Nie sprawdzałem, ale powinno działać poprawnie. Oczywiście przy założeniu, że elementy o id ‘div’ oraz ‘body’ będą występowały w dokumencie za każdym załadowaniem i podmianą kodu ‘body’.
Wielkie dzięki. Dokładnie o coś takiego mi chodziło
Rozwiązałeś mój odwieczny problem
EDIT: A jednak nie - problem z niedziałającymi skryptami nadal występuje. Nie zauważyłem, że miałem dodane ponowne wczytanie pliku JS za każdym ładowaniem treści przez AJAX