Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odwołanie do wybranego elementu pliku html
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
hmtt
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. });
nospor
http://docs.jquery.com/Core/each#callback
melkorm
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
hmtt
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
nospor
to co ci podalem dotyczylo sie iteracji przez wszytkie elementy jakie masz na wybranej liscie.

moze sprobuj wyjasnic problem jeszcze raz.
hmtt
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. });
melkorm
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ć ;]
hmtt
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
melkorm
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
nospor
@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
hmtt
Działa! Dzięki za pomoc nospor, jesteś GENIUSZEM smile.gif
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.