Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JQuery] find
zend
post
Post #1





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


W momencie kliknięcia na link sprawdzam czy istnieje podklasa "location", jeżeli istnieje usuwam klasę, jeżeli nie istnieje, wykonuje zapytanie żeby pobrać dane. Problem tkwi w tym ze find zwraca mi kolekcję klas, co powoduje nawet kilkunastokrotne (raz było 30 sic!) wykonywanie zapytań, jak ograniczyć rezultaty do jednego? Próbowałem $(parent).find('.location').first().html() ale nie działa wogóle

W wypadku gdy rozwinę drzewo element => podlista => podpodlista => podpodlista do takiej postaci i kliknę na "element" to przeszukuje mi całe drzewo i wysyła taką ilość zapytań ile jest odgałęzień
[JAVASCRIPT] pobierz, plaintext
  1. //kod w zdarzeniu click na odnośnik
  2. var parent = $(this).parent();
  3. if($(parent).find('.location').html() == null) {/*zapytanie ajax*/} else
  4. {
  5. $(parent).find('.location').remove();
  6. }
[JAVASCRIPT] pobierz, plaintext


Struktura dokumentu
  1. <div class="location">
  2. <ul>
  3. <li>
  4. <a href="">xxx</a>
  5. <div class="location">
  6. <ul>
  7. <li>
  8. <a href="">xxx</a>
  9. </li>
  10. </ul>
  11. </div>
  12. </li>
  13. </ul>
  14. </div>


Ten post edytował zend 28.05.2010, 18:41:34
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Próbowałem $(parent).find('.location').first().html() ale nie działa wogóle

jeśli dobrze zrozumiałem:
[JAVASCRIPT] pobierz, plaintext
  1. if($(parent).find('.location').first().length>0){}
[JAVASCRIPT] pobierz, plaintext


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
zend
post
Post #3





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Zarówno po moim kodzie jak i po Twoim, chodzi mi o first(), zdażenie click nie wykonuje się, wszystko działa tak jak by nie było js, a to był zwykły link
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Mhmm, ale co tak naprawdę chcesz osiągnąć...?

Cytat
to przeszukuje mi całe drzewo i wysyła taką ilość zapytań ile jest odgałęzień

Potrzebujesz raczej cancelBubble...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
zend
post
Post #5





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Cytat
Mhmm, ale co tak naprawdę chcesz osiągnąć...?

Żeby po pierwszym napotkanym elemencie spełniającym warunki zaprzestało dalszych poszukiwań

Cytat
Potrzebujesz raczej cancelBubble...
Mógłbyś dać przykład jak to wkomponować w $(parent).find('.location').html()? Bo nie wiem gdzie to upchnąć
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Żeby po pierwszym napotkanym elemencie spełniającym warunki zaprzestało dalszych poszukiwań

No to sprawdzasz przez length, jak napisałem.

Cytat
Mógłbyś dać przykład jak to wkomponować w $(parent).find('.location').html()? Bo nie wiem gdzie to upchnąć

Przecież podałem Ci gotowy warunek...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
zend
post
Post #7





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Ok, to inaczej, z tym first() nie będę już kombinował, bo całkiem przestaje mi działać js, natomiast nie mam pojęcia jak użyć cB w konekście kolekcji
[JAVASCRIPT] pobierz, plaintext
  1. event.cancelBubble = true; //tak przerywamy, tylko jak mając tak kod $(parent).find('.location').html() mogę się dobrać do obiektu i przerwać bańkę?
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




w jQuery inaczej się tego używa winksmiley.jpg

Ale jeśli chodzi o logikę -> wklepujesz to do handlera danego zdarzenia.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
zend
post
Post #9





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Dzięki za pomoc ale problem okazał się tkwić w zupełnie innej rzeczy..

[JAVASCRIPT] pobierz, plaintext
  1. function locationClick()
  2. {
  3. $('.subLocations').click(function(){
  4.  
  5. //alert($(this).parent().find('.location').html());
  6. var myThis = this;
  7.  
  8. if($(this).parent().find('.location').html() == null)
  9. {
  10. $.ajax({
  11. url : $(this).attr('href').replace('%7E' , '~'),
  12. data : {'format' : 'html'},
  13. success : function(data)
  14. {
  15. if(data.length > 3)
  16. $(myThis).parent().html($(myThis).parent().html().replace('%7E' , '~') + data);
  17.  
  18. $('.subLocations').unbind('click'); //kod który usunął problem
  19. locationClick();
  20. //locationCheckbox();
  21. }
  22. });
  23. } else {
  24. $(myThis).parent().find('.location').remove();
  25. }
  26.  
  27. return false;
  28. });
  29. }
[JAVASCRIPT] pobierz, plaintext


Za każdym razem gdy wysyłałem rządanie na nowo nakładałem zdarzenie click na klasy subLocations, co w konsekwencji powodowało że na ten sam wpis z czasem były nakładane kolejne zdarzenia click które sysyłały nadmiarowe zapytania do serwera. Problem można rozwiązać poprzez zdjęcie zdarznia click z klas i późniejsze potórne nałożenie
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 - 15:52