Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JQuery - Problem z zakładkami
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
arpi
Stworzyłem w JQuery zakładki, które działają prawidłowo.

  1. //zakładki
  2. <div id="galeria" class="zakladki"><a href="#galeria"><span class="zakladka_title">Galeria</span></a></div>
  3. <div id="opinie" class="zakladki"><a href="#opinie"><span class="zakladka_title">Opinie</span></a></div>
  4.  
  5. //miejsce na wstawienie tresci do wyswietlenia po kliknieciu w zakladke
  6. <div id="wf_zakladki_content"></div>
  7.  
  8. //tresc poszczegolnych zakladek
  9. <div id="galeria_txt" class="zakladkiTXT">tekst</div>
  10. <div id="opinie_txt" class="zakladkiTXT">
  11. <div class="dodaj_opinie">Dodaj opinię</div>
  12. </div>


  1. var k = jQuery.noConflict();
  2. k(function(){
  3. k('.zakladkiTXT').hide();
  4. k('.zakladki').click(function(){
  5. k('#wf_zakladki_content').html('');
  6. var id_kliknietej = k(this).attr('id');
  7. var tekst_kliknietej = k('#'+id_kliknietej+'_txt').html();
  8. k('#wf_zakladki_content').html(tekst_kliknietej);
  9. return false;
  10. });
  11.  
  12. });


Problem pojawia sie gdy dokladam akcje CLICK w JQuery, dla przycisku dodaj_opinie, ktory znajduje sie w jednej z zakladek

  1. k('.dodaj_opinie').click(function(){
  2. k('body').prepend('<div id="dark_bg">&nbsp;</div>');
  3. });


Jesli przeniose przycisk "dodaj_opinie" poza zakładki to polecenie CLICK działa poprawnie.
Czy ktos się spotkał z tego typu zagadką ?

W przykladzie zamiescilem tylko fragment kodu na potrzeby zapytania aby było przejrzyście.


aras785
Zamień:

  1. k('.dodaj_opinie').click(function(){
  2. k('body').prepend('<div id="dark_bg">&nbsp;</div>');
  3. });


na

  1. k('body').on('click','.dodaj_opinie',function(){
  2. k('body').prepend('<div id="dark_bg">&nbsp;</div>');
  3. });


Pozdrawiam
ZenekN
@aras785, rozumiem że '.dodaj_opinie' jest obiektem modelu dom ('body')

?
aras785
Tak, ponieważ on nie podał całej struktury więc wykorzystałem body smile.gif

Pozdrawiam
arpi
Dzięki aras785.
Działa jak należy smile.gif

Szkoda, że w książce JQuery która kupiłem do nauki nie ma żadnej wzmianki o zdarzeniu "on()". Wydana w 2010 roku.

A istnieje jakieś wyjaśnienie dlaczego mój przykład nie działał poprawnie (w zakładce) ?
Czy to jakiś błąd twórców języka, który wymaga obejścia w ten sposób smile.gif?

Pytam, bo może pozwoli to oszczędzić kilka godzin kolejnemu nowicjuszowi...
aras785
Istnieje smile.gif


Kod
  1. <div class="dodaj_opinie">Dodaj opinię</div>

Tworzysz dynamicznie podczas kliknięcia przez co jquery nie widzi tego w strukturze html która wczytuję się na początku.

Funkcja on działa w czasie rzeczywistym przez co ma możliwość zobaczenia nowego bloku który wygenerowałeś za pomocą jquery smile.gif

----
Funkcja została dodana do wersji 1.7, i myślę, że w 2010r. tej funkcji jeszcze nie było wink.gif
https://api.jquery.com/on/


Pozdrawiam Serdecznie
arpi
Wszystko jasne wink.gif
Czas teraz na jajko wielkanocne smile.gif
Pozdrawiam
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.