KotWButach
3.07.2014, 14:51:22
Witam
Mam kod i zastanawiam się czy i jak można by go skrócić czy możecie pomóc?
$('.table-component').on('click', '.filters', function() {
$('.menu-filters').load('load/test.html'); // menu
});
// ukrycie
$('.menu-filters').hide();
// Obsłużenie kliknięcia
$('.table-component').on('click', '.filters', function(event) {
event.stopPropagation();
$('.menu-filters').toggle();
});
// schowanie
$(document).click(function() {
$('.menu-filters').hide();
});
SmokAnalog
3.07.2014, 18:54:40
Czy zawartość pliku test.html jest jakaś wybitnie długa? Jeśli nie, to niech będzie normalnie w źródle.
Ukrycie .menu-filters załatwiłbym w CSS (display: none), a nie jQuery.
proszek
4.07.2014, 15:24:33
Wszystko co da się zrobić za pomocą CSSa powinno się nim robić - to tak na przyszłość. Optymalnie w JS dodajesz tylko albo odejmujesz odpowiednie klasy.
SmokAnalog
4.07.2014, 23:22:58
Cytat(proszek @ 4.07.2014, 16:24:33 )

Wszystko co da się zrobić za pomocą CSSa powinno się nim robić - to tak na przyszłość. Optymalnie w JS dodajesz tylko albo odejmujesz odpowiednie klasy.
W tym przypadku mam inne zdanie. Po co bałaganić CSS kolejnymi klasami, kiedy jedyną różnicą jest widoczność elementu? To jest jedna (a może jedyna?) z tych właściwości, które lepiej zdają egzamin jako inline style.
pedro84
4.07.2014, 23:30:16
Cytat(SmokAnalog @ 5.07.2014, 00:22:58 )

W tym przypadku mam inne zdanie. Po co bałaganić CSS kolejnymi klasami, kiedy jedyną różnicą jest widoczność elementu? To jest jedna (a może jedyna?) z tych właściwości, które lepiej zdają egzamin jako inline style.
I wtedy zaśmiecisz HTML. Struktura dokumentu CSS naprawdę nie ucierpi jeśli dodasz do niej dwie klasy: .hidden, .visible. A style inline są zawsze "be".
SmokAnalog
5.07.2014, 00:09:30
Cytat(pedro84 @ 5.07.2014, 00:30:16 )

A style inline są zawsze "be".
To twoje zdanie

Ja trzymam się swojego zdania na temat display: none. Nie podobają mi się klasy typu "hidden", bo to tylko prosty tymczasowy stan, a nie jakaś rodzina właściwości. Ale to już dyskusja filozoficzna, każdy ma swoje zdanie.
pedro84
5.07.2014, 00:22:25
Cytat(SmokAnalog @ 5.07.2014, 01:09:30 )

To twoje zdanie

Ja trzymam się swojego zdania na temat display: none. Nie podobają mi się klasy typu "hidden", bo to tylko prosty tymczasowy stan, a nie jakaś rodzina właściwości. Ale to już dyskusja filozoficzna, każdy ma swoje zdanie.
Klasa ma zasadniczy jeden argument "za". Co w przypadku
n elementów? Wstawiasz wszędzie style inline?
Poza tym, to nie odnosi się tylko do tymczasowego stanu - to zwykła klasa helpera i tyle.
SmokAnalog
5.07.2014, 01:12:10
Cytat(pedro84 @ 5.07.2014, 01:22:25 )

Klasa ma zasadniczy jeden argument "za". Co w przypadku n elementów? Wstawiasz wszędzie style inline?
Tak, dokładnie to. Nie widzę problemu.
Pyton_000
5.07.2014, 09:21:00
Ap porem zmiana pierdyliard styli inline doprowadza kolejnych programistów do szału.
Jedynym miejscem gdzie akceptuję inline są newslettery.
SmokAnalog
5.07.2014, 15:58:45
Cytat(Pyton_000 @ 5.07.2014, 10:21:00 )

Ap porem zmiana pierdyliard styli inline doprowadza kolejnych programistów do szału.
Przecież mówimy o przypisywaniu stylów z jQuery, więc co chcesz ręcznie zamieniać?
KotWButach
7.07.2014, 15:12:59
Dziękuje wam za te porpowiedzi, staram się własnie nie używać Jquery ale w tym przypadku uznałem że trzeba bo ten kod odpowiedzialny jest za każdą kolumnę których jest bardzo wiele:(.
proszek
7.07.2014, 18:31:57
Nie chodzi o zaśmiecanie kodu bądź nie ale o wydajność. Aczkolwiek oczywiście w tym przypadku wydajność nie ma wielkiego znaczenia bo kwestia jest tylko ukrycia lub odkrycia jednego elementu.
SmokAnalog
7.07.2014, 18:33:24
Trzeba by sprawdzić z ciekawości co jest wydajniejsze, bo coś podejrzewam, że .hide() szybciej zadziała niż dodanie klasy
pedro84
7.07.2014, 18:38:34
Cytat(SmokAnalog @ 7.07.2014, 19:33:24 )

Trzeba by sprawdzić z ciekawości co jest wydajniejsze, bo coś podejrzewam, że .hide() szybciej zadziała niż dodanie klasy

Zdecydowanie klasa:
http://jsperf.com/show-vs-addclass.
proszek
8.07.2014, 10:30:53
W przypadku animacji jeżeli robisz to za pomocą jquery przy każdej najmniejszej zmianie renderowana jest cala strona, css przelicza tylko jeden element. Sam odpowiedz sobie co jest szybsze
KotWButach
17.07.2014, 09:05:58
Cóz mogę powiedzieć

Fajnie że wywiązała się ciekawa rozmowa

Ale czy prócz wydajności nie jest również ważna czytelność kodu?
SmokAnalog
17.07.2014, 21:05:31
Zadałeś mądre pytanie. W dzisiejszych czasach czytelność rzeczywiście jest ważniejsza, zwłaszcza po stronie klienta. O ile oczywiście nie mówimy o odczuwalnych różnicach. Ale śmiać mi się chce, gdy ktoś pisze kod na 10 linii zamiast na 3, bo skrypt działa 0.03 sekundy zamiast 0.08.
proszek
17.07.2014, 21:52:36
Czytelność kodu po stronie klienta? A po co mu to? Kod ma się wykonywać. I powinieneś go dzielić na dwa rodzaje:
1. Kod dla "człowieka" (w domyśle programisty)
2. Kod dla maszyny (w domyśle serwera/przeglądarki)
Kod dla człowieka powinien być maksymalnie przejrzysty, łatwo edytowalny i skalowalny. A po przekompilowaniu powinien być maksymalnie wydajny. I tyle. Dlatego używa się SASSa, Lessa, CoffeeScript, HAMLa i podobnych, żeby ułatwić pracę człowiekowi a potem dla maszyny wygenerować maksymalnie wydajny kod.
Pewnie, że nie ma różnicy w przypadku prostej strony gdzie jest kilkaset linii css i kilka hide(), show(). Ale po co wyrabiać sobie złe nawyki? Po co męczyć się potem skoro i tak trzeba będzie się tego oduczyć w momencie gdy przyjdzie nam pracować nad czymś dużym i konkretnym.
SmokAnalog
17.07.2014, 22:29:32
Miałem na myśli kod, który się wykonuje po stronie klienta. Wspomniałem o tym dlatego, że to są w znacznej większości przypadków różnice totalnie nieważne. Wyjątkiem są strony, które wyświetlają wiele elementów jednocześnie lub zaawansowane animacje. Strona serwera to już inna bajka, bo serwer musi obsługiwać wiele żądań.
pedro84
17.07.2014, 23:47:30
Cytat(SmokAnalog @ 17.07.2014, 23:29:32 )

Miałem na myśli kod, który się wykonuje po stronie klienta. Wspomniałem o tym dlatego, że to są w znacznej większości przypadków różnice totalnie nieważne. Wyjątkiem są strony, które wyświetlają wiele elementów jednocześnie lub zaawansowane animacje. Strona serwera to już inna bajka, bo serwer musi obsługiwać wiele żądań.
Nawet przy prostych stronach, CSS/JS powinno się łączyć i minimalizować - w szczególności w przypadku kiedy strona ma sensownie działać na mobilkach.
KotWButach
18.07.2014, 09:40:04
Czyli mamy np taki coffeescript lub jak dla mnie bez tego gdyż się uczę js jquery więc chwilowo jeszcze nie. Ale czy są jakieś wzorce architektoniczne które są użyteczne przy pisaniu kodu? Oraz czy takie eventy jak click powinny być mieszane w kodzie czy wywoływane dopiero na końcu tam gdzie wywołujemy daną funkcje.
proszek
21.07.2014, 14:25:32
Coffescript to "język", który kompiluje się do javascript więc możesz go używać także pisząc w jQuery.
http://css-tricks.com/jquery-coffeescript/
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.