Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Javascript wczytywany raz na podstrony ajaxowe.
neo1986kk
post 16.01.2015, 18:26:42
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
trueblue
post 16.01.2015, 18:47:09
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Funkcja "success" w wywołaniu ajaxa poprzez jQuery.
Jeśli czysty JS, to: if (xmlhttp.readyState==4 && xmlhttp.status==200)

Ten post edytował trueblue 16.01.2015, 18:48:17


--------------------
Go to the top of the page
+Quote Post
neo1986kk
post 16.01.2015, 18:59:07
Post #3





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
trueblue
post 16.01.2015, 19:56:10
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.

Ten post edytował trueblue 16.01.2015, 19:56:18


--------------------
Go to the top of the page
+Quote Post
neo1986kk
post 17.01.2015, 13:16:12
Post #5





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Daimos
post 17.01.2015, 13:58:40
Post #6





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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


Ten post edytował Daimos 17.01.2015, 14:02:23


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 18:28