Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jQuery, obliczenie miejsca w grupie elementów menu wielopoziomowego
Agape
post
Post #1





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

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


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 ;/.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
Agape
post
Post #3





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

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


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.

Ten post edytował Agape 4.08.2009, 13:34:00
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. nadal niepoprawnie nazywasz klasy
  2. wiesz, na czym polega funkcja index? Co wyczytałeś w dokumentacji?
Go to the top of the page
+Quote Post
Agape
post
Post #5





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

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


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 ?
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:23