Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Dodanie nowego li
mjanisz
post 28.06.2011, 17:28:03
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 18.08.2010

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


Witam,

Mam problem z raczej dość prostym skryptem -> mamy liste <ul> w środku kilkanaście elementów li. lista wystylowana na wygląd zakładake ale mniejsza o to smile.gif
Przypuśćmy, że mamy 4 elementy w rzędzie i 10 elementów listy. Ustawią się w następujący sposób (x to w przykładzie jeden element)

X X X X
X X X X
X X

chcę zrobić aby było to ustawione o tak:

X X
X X X X
X X X X

Wyliczam modulo 4 z elementów listy i widać po ilu elementach będę musiał wstawić odpowiednio wystylowany element listy, aby wyrównał pierwszy rząd. I tutaj jest problem. Wrzucam to co zrobiłem, ma ktoś jakiś pomysł jak wstawić w odpowiednim miejscu childnode dla ul?

[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function() {
  2. var ul = document.getElementById("cat_items");
  3. var liNodes = [];
  4. for (var i = 0; i < ul.childNodes.length; i++) {
  5. if (ul.childNodes[i].nodeName == "LI") {
  6. liNodes.push(ul.childNodes[i]);
  7. }
  8. }
  9. var numNodes =liNodes.length % 4;
  10. });
[JAVASCRIPT] pobierz, plaintext


pozdrawiam!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
erix
post 28.06.2011, 18:20:39
Post #2





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




Po co się babrasz z czystym JS-em mając załadowanego frameworka?

Chwila szukania: http://trevordavis.net/blog/reversed-ordered-list-jquery


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
mjanisz
post 28.06.2011, 18:32:47
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 18.08.2010

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


tak tylko tu chodzi o odwrócenie listy tylko dodanie po określonym elemencie np 2,3 nowego noda
Go to the top of the page
+Quote Post
erix
post 28.06.2011, 18:41:19
Post #4





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




To nie możesz licznika zaimplementować w pętli? tongue.gif


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Sephirus
post 28.06.2011, 19:09:50
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Nie do końca rozumiem problem ale nie możesz po prostu używać insertBefore? Dajesz tablice od tyłu w pętli i zarówno kolejne UL jak i LI dodajesz na zasadzie insertBefore.

Dzięki temu orzymasz


X X X X
X X X X
X X

od końca czyli

X X
X X X X
X X X X

wink.gif HTH


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
mjanisz
post 28.06.2011, 19:14:10
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 18.08.2010

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


nie zrozumielismy sie... to ja sie nie jasno wyrazilem tongue.gif

jest jedna lista ul i chcę wstawić nowe li np. po trzecim elemencie elemencie listy - tak będzie jaśniej smile.gif
czyli np
mamy :
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>

a chce otrzymać
<ul>
<li></li>
<li></li>
<li class="nowe-li"></li>
<li></li>
<li></li>
</ul>
-------------------------
edit: ok już przelatuje po liście tylko jak dodać nowy element "li" za wybranym elementem smile.gif
[JAVASCRIPT] pobierz, plaintext
  1. var start = 0;
  2. $("ul#cat_items li").children().each(function() {
  3. if(start == 3) {
  4. $(this).append("To ten element!");
  5. }
  6. start++;
  7. });
[JAVASCRIPT] pobierz, plaintext


Ten post edytował mjanisz 28.06.2011, 19:29:29
Go to the top of the page
+Quote Post
Sephirus
post 28.06.2011, 19:35:32
Post #7





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Hmm ok - ja nie praktykuje żadnych spowalniaczy (czytaj frameworków) ale zrobiłbym to tak:

Chcemy wrzucić nowe LI za elementem powiedzmy 5-tym. (czyli index = 4)
zakładam że referencje do UL mam w zmiennej "ul" a nowe LI w zmiennej "li",

[JAVASCRIPT] pobierz, plaintext
  1. // najpierw warunek na sprawdzenie czy lista ma w ogóle 5 elementów
  2. if(ul.getElementsByTagName('li').length <= 5) ul.appendChild(li);
  3. else ul.insertBefore(li , ul.getElementsByTagName('li')[4]);
[JAVASCRIPT] pobierz, plaintext


O to chodziło? smile.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
mjanisz
post 28.06.2011, 19:41:17
Post #8





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 18.08.2010

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


wspaniale! o to chodzilo smile.gif

ps. z ciekawości czystej - jak wstawić tak noda przy pomocy jquery?
Go to the top of the page
+Quote Post
Sephirus
post 28.06.2011, 19:44:10
Post #9





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Z czystej miłej chęci - nie wiem wink.gif Nie używam ;P


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
erix
post 29.06.2011, 07:17:01
Post #10





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




[JAVASCRIPT] pobierz, plaintext
  1. $('#lista li').eq(2).after($('<li class="asd">bleble</li>'));
[JAVASCRIPT] pobierz, plaintext

Pisane z palca, ale powinno działać. [;


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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: 31.07.2025 - 10:26