Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX]problem z ajaxStart i ajaxStop
neo1986kk
post
Post #1





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

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


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

Ten post edytował neo1986kk 17.06.2011, 21:56:04
Go to the top of the page
+Quote Post
peter13135
post
Post #2





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


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.


--------------------
:)
Go to the top of the page
+Quote Post
neo1986kk
post
Post #3





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

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


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:)
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 Aktualny czas: 21.08.2025 - 20:18