Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Javascript wczytywany raz na podstrony ajaxowe.
Forum PHP.pl > Forum > Przedszkole
neo1986kk
Witam, mam taki układ strony, że wczytuję tylko lewy pasek i z niego wybieram dział, który chcę wyświetlić po prawej stronie. Po kliknięciu oczywiście ajaxem wczytuję content i pojawia mi się wszystko elegancko, ale mimo, że jest w nim input.date, a na początku razem z indexem dodałem <script src="date.js">, a tam mam ustawione ('.date').datepicker(); to jak sie domyślacie to nie zadziała, bo już drugi raz nie wczytuje dokumentu i nie sprawdza pod kątem klas inputów.

Czy macie jakieś rozwiązanie, oprócz dodawania:

  1. $(document).ready(function(){
  2.  
  3. $('.date').datepicker();
  4.  
  5. }


w tym wczytywanym ajaxowo pliku.
trueblue
Funkcja "success" w wywołaniu ajaxa poprzez jQuery.
Jeśli czysty JS, to: if (xmlhttp.readyState==4 && xmlhttp.status==200)
neo1986kk
Nie o to chodzi....

succes:: function(data){
$('#prawyContent').html(data)
}

Czyli ja zaczytuje ajaxem cały content razem z templejtem, ale kiedy contentem jest "<input class="date"/>" a w głównym indexie mam zapisane:

$('.date').datepicker();

to po zaczytaniu ajaxem treści do prawego Contentu na tym inpucie nie zadziała datepicker
trueblue
O to, o to.

  1. success:function(data){
  2. $('#prawyContent').html(data);
  3. $('.date').datepicker();
  4. }


Zdarzenie onDOMReady nie jest wywoływane przy doczytywaniu treści ajaxem.
neo1986kk
no pewnie pomaga, ale to jest troche bez sensu, bo jeśli wczytywane ajaxem treści są bardzo rozwinięte i obsługują potężne aplikacje javascriptowe, to za każdym razem trzeba by pisać w success każde możliwe zdarzenie
Daimos
Zapominasz, że jeśli zdarzenia są powtarzalne, to wystarczy zrobić uniwersalną funkcję. np.
[JAVASCRIPT] pobierz, plaintext
  1. function simpleAjax(contentId, url)
  2. {
  3. $.ajax({
  4. success: function(data)
  5. {
  6. $('#'+contentId).html(data);
  7. }
  8. })
  9. }
  10. // wykorzystanie
  11. simpleAjax('mojeId', 'mojeUrl');
[JAVASCRIPT] pobierz, plaintext

Oczywiście są lepsze sposoby, chodzi o sam zamysł. Co się powtarza, to skracasz, piszesz funkcje, klasy. Równie dobrze możesz sobie napisać obsługę linków, które ogarniesz hurtowo, definiując jedynie atrybuty data-
Czyli np. definiujesz, że wszystkie linki z klasą .ajax korzystają z danej metody i tworzysz linki w formie
  1. <a href="#" data-result-div="idGdzieMaBycZawartosc" data-url="skadBracDane" class="ajax">Ajax link</a>

Teraz tylko podpinasz do wszystkich linków $('.ajax'). wybraną funkcję i sprawa załatwiona
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.