Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z jQuery i pokazywaniem warstw
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
spit
Cześć,
Chcę zrobić na stronie (w newsach) wyświetlanie kategorii w liście nieuporządkowanej, która jednak pojawiać ma się dopiero po najechaniu na konkretny link. Napisałem taki kod:
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3.  
  4. $(".kom").hide();
  5.  
  6. $("a.open").mouseover(function() {
  7. $(".kom").show("fast");
  8. return false;
  9. });
  10.  
  11. $(".kom").click(function() {
  12. $(this).toggle("slow");
  13. return false;
  14. });
  15.  
  16. })</script>

  1. <ul class="k">
  2. <li><a href="#">autor: tomek</a></li>
  3. <li><a class="open" href="#">kategorie</a></li>
  4. </ul>
  5. <ul class="kom">
  6. <li><a href="#">1</a></li>
  7. <li><a href="#">2</a></li>
  8. </ul>
  9. <p style="clear: both">Lorem ipsum dolor sit amet</p>

I niby wszystko gra. Tylko, jak pojawi się drugi taki news, i wtedy najadę na link, kategorie rozwijają się we wszystkich wiadomościach. Co zrobić?
nospor
$(".kom") - no przeciez tutaj pobierasz wszystko co ma klasę "kom". Jesli wszystkie komentarze maja taką klase, to wszystkie beda sie pokazywac i chować. Musisz pobierac tylko dany news dla danego linka
spit
Też się domyśliłem, że tak trzeba. Tylko nie wiem jak, chciałem je identyfikować nadając ul.k i ul.kom takie same klasy (np .news-id) ale nie wiem, jak zaznaczyć, by otwierał tę konkretną listę, gdzie te dwie klasy się równają.
nospor
dla linka pokazujacego nadajesz id: link_unikalneiddlaautora
dla komentarza nadajesz id: kom_unikalneiddlaautora

Teraz gdu najedziesz na link, odczytujesz id linku, wydzielasz z niego unikalneiddlaautora i pokazujesz komentarz o id:kom_unikalneiddlaautora

Wydzielenie unikalneiddlaautora to proste operacje na tekscie w js.
spit
Cytat(nospor @ 27.09.2007, 05:45:58 ) *
Wydzielenie unikalneiddlaautora to proste operacje na tekscie w js.

Cóż, może dla Ciebie, ja nigdy do js nie lgnąłem, a jQuery uczę się od wczoraj smile.gif Niemniej jednak dzięki za wskazówki.
nospor
Kod
var id='link_unikalneiddlaautora';
var unikalneid = id.substr(id.indexOf('_')+1);
alert(unikalneid);

Mowilem ze proste operacje winksmiley.jpg
Teraz podczep to do siebie i gotowe smile.gif
gekon
@nospor: kombinujesz smile.gif
@spit: Jeżeli nie będziesz zmieniał struktury 'newsa' to wystarczy pochodzić trochę po drzewie:
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3.  
  4. $(".kom").hide();
  5.  
  6. $("a.open").mouseover(function() {
  7. $(this).parents('ul').next().show("fast"); //o tu :)
  8. return false;
  9. });
  10.  
  11. $(".kom").click(function() {
  12. $(this).toggle("slow");
  13. return false;
  14. });
  15.  
  16. })</script>
nospor
Cytat
@nospor: kombinujesz
Oj zaraz kombinuje smile.gif
Poprostu mój sposób jest odporny na zmiane struktury html, Twoj nie. Co nie zmienia faktu, że Twoj wydaje się lepszy dla tej struktury (jeśli się nie zmieni oczywiscie)
spit
Skorzystałem z obu rozwiązań, jednakże sposób gekona wydaje się łatwiejszy, bo schemat będzie właśnie taki. Dzięki Wam obu!
A będąc jeszcze przy jQuery, mam tą pojawiającą się listę, ale znika dopiero po kliknięciu. Co zrobić, by znikała po "odjechaniu" myszką? mouseover i mouseout chowają warstwę zaraz po najechaniu na nią. Pomysły?
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.