Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Niemożliwość odczytania elementu po kilkukrotnym wczytaniu zawartości do tego samego elementu
puz219
post
Post #1





Grupa: Zarejestrowani
Postów: 201
Pomógł: 0
Dołączył: 1.07.2007

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


Witam.

Napisałem sobie przy użyciu jQuery skrypt wczytujący dynamicznie zawartość pliku do elementu <div>. Do tej pory wszystko jest w porządku, jednak ów <div> zawiera w sobie kolejny, który po najechaniu na ten, do którego zawartość się wczytuje staje się widoczny, a po opuszczeniu elementu ukrywa się. Wszystko prosto i przy pierwszym wczytaniu zawartości wszystko działa, ale jeżeli wczytam już zawartość po raz drugi, ten podrzędny div już się nie wyświetla w ogóle.

Trochę skomplikowany ten opis, ale przedstawiam poniżej kod, który może naświetli co nieco tę sytuację

index.php
  1. <div class="app">
  2.  
  3. <div class="column viewer"></div>
  4. <div class="column menu">
  5.  
  6. <a href="#" id="cat-1" class="cat-btn">Opcja #1</a>
  7. <a href="#" id="cat-2" class="cat-btn">Opcja #2</a>
  8. <a href="#" id="cat-3" class="cat-btn">Opcja #3</a>
  9. <a href="#" id="cat-4" class="cat-btn">Opcja #4</a>
  10. <a href="#" id="cat-5" class="cat-btn">Opcja #5</a>
  11.  
  12. </div>
  13. <div class="clear"></div>
  14.  
  15. </div>


product.php
  1. <img src="images/sample01.jpg" />
  2. <img src="images/sample02.jpg" />
  3. <img src="images/sample03.jpg" />
  4. <img src="images/sample04.jpg" />
  5. <img src="images/sample05.jpg" />
  6.  
  7. <div class="popup">Element Title</div>


A teraz kod w jQuery:

  1. $("a.cat-btn").each( function() {
  2.  
  3. $(this).click( function() {
  4.  
  5. if($(".viewer").is(":empty")) {
  6.  
  7. $(".viewer").load("product.php?cat=" + $(this).attr("id"), function(response, status, xhr) {
  8.  
  9. if(status == "success") {
  10.  
  11. $(this).fadeIn();
  12.  
  13. viewer_functions(); //funkcja odpowiedzialna za wyswietlenie diva
  14.  
  15. }
  16.  
  17. });
  18.  
  19. }
  20.  
  21. else {
  22.  
  23. $(".viewer").empty().hide();
  24.  
  25. $(".viewer").load("product.php?cat=" + $(this).attr("id"), function(response, status, xhr) {
  26.  
  27. if(status == "success") {
  28.  
  29. $(this).fadeIn();
  30.  
  31. viewer_functions(); //funkcja odpowiedzialna za wyswietlenie diva
  32.  
  33. }
  34.  
  35. });
  36.  
  37.  
  38. }
  39.  
  40. });
  41.  
  42. });
  43.  
  44.  
  45. function viewer_functions() {
  46.  
  47. $(.viewer).hover(function() {
  48.  
  49. $(this).find(".popup").fadeIn();
  50.  
  51. }, function() {
  52.  
  53. $(this).find(".popup").fadeOut();
  54.  
  55. });
  56.  
  57. }


Generalnie chodzi o to, iż po drugim wczytaniu zawartości product.php do elementu "viewer" skrypt nie znajduje już elementu "popup", przez co ten element się w ogóle nie wyświetla.

Proszę o jakieś sugestie by rozwiązać ten problem.

Z góry dziękuję za odpowiedź.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kamil4u
post
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Cytat
Kod w moim poście, to wersja demo

Problem w tym, że nie. Prosiłem o link do strony, gdyż dzięki temu mogę samemu przeanalizować co się tam dzieje, pozmieniać coś za pomocą firebug-a i posprawdzać konsolę błędów. A tak to muszę kopiować Twoje kody i bawić się w to samemu i w sumie marnuję czas, który mógłbym już przeznaczyć tylko na pomoc i analizę kodu. Nie chcę żebyś odebrał to jako jakiś atak czy to, że mój czas jest bardzo cenny, ale też mógłbyś to trochę docenić.

Niemniej zrobiłem to, czyli przekopiowałem Twoje pliki lokalnie, dołączyłem bibliotekę jQuery i uruchomiłem skrypt. Dość szybko stwierdziłem, że to nie jest kod, który masz na swojej stronie, gdyż konsola błędów wskazuje błędy. Chyba, że jesteś na tyle początkujący, że nie korzystasz z konsoli, w takim razie gorąco Cię do tego zachęcam, bo to bardzo ułatwia życie programiście JS. Błąd polega na tym, że w funkcji "viewer_functions", w pierwszej linii nie masz " w $(.viewer).

Tak więc proszę o link do konkretnego demo, chyba, że rzeczywiście jedynym błędem był brak tego " (IMG:style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 28.12.2025 - 13:18