Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jQuery, obliczenie miejsca w grupie elementów menu wielopoziomowego
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Agape
Mam takie menu

  1. <?php
  2. <ul>
  3.    <li></li>
  4.    <li></li>
  5.    <li></li>
  6. </ul>
  7. <ul>
  8.    <li></li>
  9.    <li></li>
  10.    <li>element</li>
  11.    <li></li>
  12.    <li></li>
  13. </ul>
  14. <ul>
  15.    <li></li>
  16.    <li></li>
  17. </ul>
  18. ?>


Chcę zrobić funkcje która będzie przesuwała element w góre i w dół, wszystko już mam ale nie mogę pobrać aktualnej pozycji z listy li. Każde li ma klase w której jest zapisany poziom w menu (które na 4 poziomy)
Jak używam:
  1. $(this).parent("li.2").prevAll().length;

Zwraca mi pozycje ale tylko w aktualnym ul (tu wynosi 2) a chcę, żeby była to pozycja we wszystkich li class="2" (czyli tutaj 5).
Próbowałem na różne sposoby ale coś mi to nie wychodzi ;/.
erix
Po pierwsze - zobacz, jak wyglądają prawidłowe identyfikatory/klasy.

Cytat
Zwraca mi pozycje ale tylko w aktualnym ul (tu wynosi 2) a chcę, żeby była to pozycja we wszystkich li class="2" (czyli tutaj 5).

Doczep się do rodzica (selektorem pobierasz uchwyt dla rodzica tych wszystkich UL, potem zwyczajnie używasz index.
Agape
Dzięki bardzo za pomoc, jeszcze tylko mam problem z pobraniem odpowiedniego elementu ;/. Moje li wygląda tak:
  1. <?php
  2. <li class="2">element
  3.     <span style="float:right;">
  4.        <span class="gora">^</span>
  5.        <span class="dol">v</span>
  6.    </span>
  7. </li>
  8. ?>


To oczywiście prowizorycznie jak na razie. Proboje pobrac numer li:
  1. <?php
  2. currentIndex = $("*").index(this.parent().parent());
  3. alert(currentIndex);
  4. ?>

To mi wyswitla -1 czyli nie znaleziono elementow ;/. Probuje na rozne sposoby i ciagle tak samo, skladnia jest dobra bo probowalem na przykladzie
  1. <?php
  2. currentIndex = $("*").index(this);
  3. alert(currentIndex);
  4. ?>

i mi wyswietla, tyle ze jest to span, ktory mnie nie intreresuje. Potrzebuje pobrac li.
erix
  1. nadal niepoprawnie nazywasz klasy
  2. wiesz, na czym polega funkcja index? Co wyczytałeś w dokumentacji?
Agape
http://docs.jquery.com/Core/index :
index()
Szuka każdego pasującego elementu i zwraca jego wskaźnik jeżeli znajdzie jakiś element. Numerowanie zaczyna od 0.

z przykładu:
$("div").index(this);
czyli z wszystkich div wyszukaj ten ktorego dotyczy akcja

Sory ale na prawde nie rozumiem. Dokumentacja jest strasznie uboga. Dla czego klasy sa zle nazwane? Standardowy html ;/
Poza tym jak wpisuje
  1. <?php
  2. $(this).parent().parent().insertAfter("li.2:eq("+currentIndex+")");
  3. ?>

przestawia element o jeden w dol, niestety zle jest pobierany index wiec wstawia w zlym miejscu. Chcialbym tylko pobrac uchwyt do aktualnego li
Moglbys pokazac mi prawidlowa skladnie ?
erix
Cytat
Sory ale na prawde nie rozumiem. Dokumentacja jest strasznie uboga.

No bo oprócz tego trzeba odrobinę ruszyć głową.

Cytat
Dla czego klasy sa zle nazwane? Standardowy html ;/

Standardowy HTML: http://www.w3.org/TR/CSS21/syndata.html#keywords - do poduszki i nie zadajemy pytań z elementarza.

Cytat
Szuka każdego pasującego elementu i zwraca jego wskaźnik jeżeli znajdzie jakiś element. Numerowanie zaczyna od 0.

Nie wskaźnik, ale liczbę porządkową w kolekcji wg danego selektora.

Cytat
Chcialbym tylko pobrac uchwyt do aktualnego li
Moglbys pokazac mi prawidlowa skladnie ?

Aktualnego, czyli np. patrz:

Musisz pobrać najpierw kolekcję elementów do jakiejś zmiennej, np:
Kod
var items = $('#rodzic li');

// ... event:
index = items.index(this);


Pozycja jest w dużym stopniu uzależniona od prawidłowego selektora kolekcji.
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.