Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Odwołanie do wybranego elementu pliku html
hmtt
post 30.09.2008, 13:38:44
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 7.06.2008

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


Witam!

W jaki sposób odwołać się do pojedynczego elementu jeśli skrypt js (jQuery) odwołuje się do wielu klas css. Poniżej przedstawiam kod.

Fragment html jest w pętli dlatego używam klasy css do opisania bloku "comments". Na jednej stronie będzie kilka produktów a do każdego z nich planuje zrobić niezależnie rozwijane komentarze kożystajace z tej samej funkcji js.

  1.  <p class="show_comments">komentarze</p>
  2.  <div class="comments">
  3.   <p>Komentarz 1</p>
  4.   <p>Komentarz 2</p>
  5.  </div>





  1. <script type="text/javascript">$(document).ready(function() {
  2.  
  3.  
  4.  $('.comments').hide();
  5.  $('.show_comments').hover(function() {
  6.   $('.comments').show();
  7.  });
  8. });
Go to the top of the page
+Quote Post
nospor
post 30.09.2008, 13:42:19
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://docs.jquery.com/Core/each#callback


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
melkorm
post 30.09.2008, 13:43:24
Post #3





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


musisz każdemu elementowi do którego chcesz się dostać nadać unikalne id winksmiley.jpg

nie uzywam jQuerry ale jak w nawiasie dasz #idDiv zamaist .class to chyba zadziała ;] I wtedy w wywoływaniu funkcji przesyłasz parametr id div'a dla którego ma zajść dana akcja smile.gif


--------------------
Go to the top of the page
+Quote Post
hmtt
post 30.09.2008, 13:54:24
Post #4





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 7.06.2008

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


Chodzi o to że nie chcę nadawać każdemu alementowi id poprzez argument id. Jeśli będę musiał nadać id do każdego bloku div to zrobię to prawdopodobnie w PHP.

nospor: chyba mnie nie zrozumiałeś ale dzięki za pomoc. Nie wiem jaki zastosowanie może mieć tutaj funkcja each. Codziło Tobie o dynamiczne nadanie argumentu id do kolejnych bloków div?

Pozdrawiam
Go to the top of the page
+Quote Post
nospor
post 30.09.2008, 14:08:44
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




to co ci podalem dotyczylo sie iteracji przez wszytkie elementy jakie masz na wybranej liscie.

moze sprobuj wyjasnic problem jeszcze raz.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
hmtt
post 30.09.2008, 15:31:29
Post #6





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 7.06.2008

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


Dla przykładu wrzuciłem kod z trzema blokami DIV. Kiedy użytkownik klikni w dany blok mają pojawić się komentarze ale tylko te przypisane do klikniętego bloku. Skrypt JS który zamieściłem powoduje rozwinięcie komentarzy we wszystkich blokach DIV a nie tylko w tym klikniętym. Jeszcze raz zaznaczam że nie chcę nadawać każdemu blokowi osobnego atrybutu ID. Jeżeli miałbym wprowadzić jakieś modyfikacje to raczej tylko do pliku JS. Pozdrawiam!

  1.  <p class="show_comments">komentarze</p>
  2.  
  3.  
  4.  <div class="comments">
  5.   <p>Komentarz 1</p>
  6.   <p>Komentarz 2</p>
  7.  </div>
  8.  
  9. <p class="show_comments">komentarze</p>
  10.  
  11.  
  12.  <div class="comments">
  13.   <p>Komentarz 1</p>
  14.   <p>Komentarz 2</p>
  15.  </div>
  16.  
  17. <p class="show_comments">komentarze</p>
  18.  
  19.  
  20.  <div class="comments">
  21.   <p>Komentarz 1</p>
  22.   <p>Komentarz 2</p>
  23. </div>


  1. <script type="text/javascript">$(document).ready(function() {
  2.  
  3.  
  4.  $('.comments').hide();
  5.  $('.show_comments').hover(function() {
  6.   $('.comments').show();
  7.  });
  8. });


Ten post edytował hmtt 30.09.2008, 15:32:05
Go to the top of the page
+Quote Post
melkorm
post 30.09.2008, 15:52:47
Post #7





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


możesz dla każdego diva nadać akcje onclick i tam wrzucić kod / funkcje która by wywoływała to że dany blok się rozwija/pojawia typu:

Kod
onclick="this.show();"


można wpleść jakis warunek bazujący na tym czy element jest widoczny lub nie i by wykonywało się hide/show winksmiley.jpg

Nie tetsowałem takiego rozwiązania razem z jQuery więc tylko mówie jak to na logiczny sposób powinno zadziałać ;]

Ten post edytował melkorm 30.09.2008, 15:53:25


--------------------
Go to the top of the page
+Quote Post
hmtt
post 30.09.2008, 15:57:54
Post #8





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 7.06.2008

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


Niestety w grę wchodzi tylko jQuery smile.gif Nie chcę mieć bezpośrednich odwołań do funkcji JS ze znaczników HTML. Dzięki za pomoc melkorm smile.gif
Go to the top of the page
+Quote Post
melkorm
post 30.09.2008, 16:04:50
Post #9





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


hm to z zewnatrz do danego elementu div'a się chyba nie odwołasz smile.gif bo musza być unikalne bo jakoś musisz je rozpoznawać snitch.gif
I dlaczego nei chcesz mieć akcji onclick ? zawsze możesz wykonać funkcje która będzie jQuery? troche nie rozumiem Twojego rozumowania winksmiley.jpg - po to akcja onclick chyba jest i po to się jej używa nie jest to żadnym złem tongue.gif


--------------------
Go to the top of the page
+Quote Post
nospor
post 30.09.2008, 18:51:17
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@melkorm to ze czegos nie umiesz, nie znaczy ze nie mozna tego zrobic

Kod
$('.comments').hide();
$('.show_comments').hover(
      function () {
        $(this).next().show();
      },
      function () {
        $(this).next().hide();
      }
    );

Przy zalozeniu ze divy leza obok siebie. jak nie leza obok siebie to tez sie da winksmiley.jpg


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
hmtt
post 1.10.2008, 09:50:33
Post #11





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 7.06.2008

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


Działa! Dzięki za pomoc nospor, jesteś GENIUSZEM smile.gif
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 Wersja Lo-Fi Aktualny czas: 24.05.2025 - 04:54