Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX]problem z ajaxStart i ajaxStop
Forum PHP.pl > Forum > Przedszkole
neo1986kk
Witam mam taki kod
  1. <div id="ajax"></div>
  2. <button id="zapisz"></button>
  3. <button id="wczytaj"></button>


i teraz ajax
  1. $('#zapisz').click(function(){
  2. $loader=('<div class="loader">Zapisuję</div>'),
  3. $(this).ajaxStart(function(){
  4. $('#ajax').append($loader)
  5. });
  6. $(this).ajaxStop(function(){
  7. $('.loader').remove();
  8. });
  9. });
  10.  
  11.  
  12. $('#wczytaj').click(function(){
  13. $loader1=('<div class="loader">Wczytuję</div>'),
  14. $(this).ajaxStart(function(){
  15. $('#ajax').append($loader1)
  16. });
  17. $(this).ajaxStop(function(){
  18. $('.loader'1).remove();
  19. });
  20. });
  21.  



i teraz są 2 problemy

1. jak kliknę kilka razy wcztaj to w divie id="ajax" pojawia się

<div class="loader">Wczytuję</div>
<div class="loader">Wczytuję</div>
<div class="loader">Wczytuję</div>
<div class="loader">Wczytuję</div>
<div class="loader">Wczytuję</div>
<div class="loader">Wczytuję</div>

a powinno się pojawić raz bo przecież przy ajaxStop mam remove i to rzeczywiście działa tylko że w taki sposób że usuwa mi te wszystkie, ale jak znow klikne
wczytaj to pojawia się znów o jedno więcej i znikają po wczytaniu.

a drugi problem to taki że jak kliknę Zapisz
to się pojawia coś takiego


<div class="loader">Wczytuję</div>

<div class="loader">Zapisuję</div>

<div class="loader">Wczytuję</div>

<div class="loader">Zapisuję</div>

<div class="loader">Zapisuję</div>

<div class="loader">Wczytuję</div>

<div class="loader">Zapisuję</div>

<div class="loader">Wczytuję</div>

<div class="loader">Zapisuję</div>

<div class="loader">Wczytuję</div>

<div class="loader">Zapisuję</div>

<div class="loader">Wczytuję</div>

<div class="loader">Zapisuję</div>

i to samo jak kilka razy to sie też klika razy pokazuje:/

chciałbym aby to się pojawailo tylko raz i żeby ajaxStart był oddzielony między przyciskami czyli jeśli 1 przycik to dziala tylko jeden ajaxStart a nie oba.

PS. nie piszcie mi o rozwiazaniu typu loader.show(), loader.hide() dlatego ze ja tych przycisków mam 20
peter13135
nie znam się na jQuery, ale czy zamiast append nie możesz zrobić coś takiego (na wzór js)
Kod
div.innerHTML = 'wartosc'
?
czyli, żeby nie dopisywać wartość, tylko przypisać nową wartość.

drugi sposób, może sprawdź czy div ma już wartość $loader1, lub czy jest pusty za pomocą funkcji empty
jeśli się okaże że nie ma wartości, to dopiero wtedy dodawaj ten tekst do diva

trzeci sposób.

Kod
czy $('.loader').remove();
nie powinno być przed :
Kod
$('#ajax').append($loader)


Wybacz, za niefachową odpowiedź ale nikt nie odpowiedział przez tyle czasu, więc mam nadzieje, że i moja odpowiedź się przyda.
neo1986kk
dzięki:) ale zrobiłem to jeszcze inaczej, poprostu w funkcji dałem warunek że po kliknięciu pokazuje a przy wywołaniu ajaxa usuwa tego diva:)
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.