Krisu
23.08.2016, 08:52:27
handlers
.each(function(index
){
for (i = 2; i <= items.length; i++) {
this.cls = (index === 0 ) ? 'tab first-tab active' : 'tab tab'+ [i] + ''
}
title += '<li class="' + this.cls + '">'
title += $(this).html()
title += '</li>'
});
Mam taką oto funkcję, docelowo chodzi mi o to by kolejne listy li przyjmowały w nazwie klasy numery kolejne. W chwili gdy pętlę zrobię w ten sposób zwraca mi tylko końcową wartość pętli. Niestety na JS za bardzo się nie znam i nie mam pomysłu jak zagnieździć pętle by dobrze zliczała.
trueblue
23.08.2016, 09:30:07
Zwraca końcową, bo umieściłeś fragment kodu poza pętlą.
Jeśli znasz się na PHP, to tam działanie pętli jest analogiczne.
Krisu
23.08.2016, 09:33:34
handlers
.each(function(index
){
title += '<li class="' + for (i = 2; i <= items.length; i++) { this.cls = (index === 0 ) ? 'tab first-tab active' : 'tab tab'+ [i] + '' } + '">'
title += $(this).html()
title += '</li>'
});
Wiem o tym, najchętniej zbudowałbym to w ten sposób jak powyżej i pewnie byłoby po problemie, ale nie wiem jak w JS składniowo poprawnie to zapisać...
trueblue
23.08.2016, 09:39:16
A nie myślałeś, aby wstawić te 3 linijki przed zamknięciem klamry pętli?
Krisu
23.08.2016, 09:49:45
Wówczas rzeczywiście działa, jednak funkcja także powiela same zakładki i zamiast listy o nazwie artykuł 1, artykuł 2, artykuł 3, mam listy artykuł 1, artykuł 1, artykuł 1, artykuł 2, artykuł 2, artykuł 2 itd.
trueblue
23.08.2016, 09:52:37
Co masz w handlers, co masz w items?
Sam each to już struktura pętli, a w niej tworzysz drugą.
Zobacz ten przykład:
https://jsfiddle.net/waawL47y/Nie wiem czy jest poprawny, bo Ty tworząc pętlę w jednej iterujesz chyba po wszystkich elementach <li> (zakładam, że w handlers są wszystkie), a w drugiej iterujesz od 3-ego elementu (for).
Krisu
23.08.2016, 10:10:55
Dziękuję bardzo za pomoc

Wystarczyło zrezygnować z fora i skorzystać ze zmiennej index
handlers
.each(function(index
){
this.cls = (index === 0 ) ? 'tab first-tab active' : 'tab tab'+ [index] + ''
title += '<li class="' + this.cls + '">'
title += $(this).html()
title += '</li>'
});
trueblue
23.08.2016, 10:22:05
A co Ty robisz potem z title?
Krisu
23.08.2016, 13:07:46
$(tabs_buttons).find('.tabs_container').append( title )
$(items).find('.title').remove()
trueblue
23.08.2016, 13:22:38
Nie wiem co masz w tabs_buttons oraz w items.
Jednym zdaniem, jeśli dodajesz klasy do istniejących elementów (ew. usuwasz inne klasy z tych elementów), to robisz to na okrętkę.
Krisu
23.08.2016, 13:30:37
Jeżeli chcesz dokładnie wiedzieć do czego było mi to potrzebne napiszę na PW, ale w 100% mi pomogłeś i osiągnąłem zamierzony efekt. Po prostu nie znam się na JS, wolę pisać w PHP.
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.