jQuery, poprawność kodu, semantyka...

0

Witam,

Pracuję teraz nad poprawnością mojego kodu w jQuery, obecnie piszę strukturalnie, przykład mojego kodu:

http://codetidy.com/4183/

Czy możecie skomentować ten kod?? Czy jest on poprawny ?? Chodzi mi o samą składnię ? O pisanie kodu strukturalnie, czy tak jest ok? Czy popełniam jakieś błędy? aaa i w sumie czy można pisać obiektowo w jQuery ? :D

I jaka jest różnica pomiędzy

 <script type="text/javascript"> //jakiś kod </script>

a <script> //jakis kod </script>

0

Opakuj to sobie w obiekt, już będzie ładniej:

var calendar = {};
calendar.main = function() {
  // kod
};
calendar.previous_month = function() {
  // kod
};
calendar.next_month = function() {
  // kod
};

// wywołanie:
calendar.main();

Ale oczywiście cały czas odwołujesz się do hardkodowanych selektorów, co jest brzydkie. Przekazywanie selektora jakiegoś głównego elementu kalendarza zmiennej - już będzie ładniej. No a najładniejsza opcja to plugin do jQuery - to nie jest takie trudne, a wygląda 100x ładniej, no i możesz kod wykorzystać wiele razy, zrobić ładniej konfigurację takich pierdół jak długość animacji przy inicjalizacji i ogólnie się z tym pokazać.

Zdecyduj się na jeden styl klamrowania, z tym, że klamrowanie od nowej linijki jest w jakimś specyficznym przypadku niezalecane, bo interpreter źle to zrozumie. Nie pamiętam już konkretnie o co chodziło, ale był kiedyś wątek z problemem i bswierczynski się wypowiadał na ten temat (przed środkiem kwietnia 2012 jakbyś chciał szukać, ale będzie ciężko, sam nie znalazłem).

Nie myl także pojęć, piszesz w javascripcie używając biblioteki jQuery i choć wyrażenie "piszę w jQuery" chyba nie jest niepoprawne, ale jest z pewnością poddające w wątpliwość czy w ogóle wiesz co robisz.

Między podanym markupem HTML w praktyce nie ma różnicy, w teorii - przed HTML5 atrybut type był wymagany.

0

super wskazówki :) już poprawiam kod :) na pewno przerobie ten kod na własny plugi, ponieważ zdecydowałem się na pisanie swojego kalendarza, a nie korzystanie z gotowców, chociażby dlatego, żeby się nauczyć :) napisz mi jeszcze jedną rzecz, chodzi mi o te hardcorowe selektory ? Co dokładnie masz na myśli (jakiś przykład) niestety nie zrozumiałem dokładnie Twojego opisu :( Takie częste odwoływanie się do selektorów jest nieoptymalne ? czy chodzi, żeby zamiast id="" użyć class="". Nie rozumiem w czym problem, jak byś wyjaśnił łopatologicznie był bym super wdzięczny :)

1

nie hardcorowe o.O

hardkodowane:
http://pl.wiktionary.org/wiki/hardkodować#pl

Czyli selektory są na stałe, typu ".next". Ja mogę chcieć na stronie mieć dużo elementów z klasą ".next", Twój obejmie je wszystkie.
W niepluginowej wersji Twojego kodu powinieneś przynajmniej podawać kontener główny w parametrze, np:

nazwa_funkcji('#kalendarz');

a w kodzie coś takiego:

function nazwa_funkcji(kontener) {
  $(kontener).find('.next').cos_tutaj_dalej_z_tym();
}

Wtedy mogę na stronie mieć wiele kalendarzy i mogę mieć inne elementy, niezwiązane z kalendarzem z klasą .next.

Generalnie selektor zawierający w sobie tylko klasę, w postaci .dowolna_klasa już od podstaw jest złym pomysłem.

0

Nie wiem czy to dobry pomysł, wrzuciłem 3 metody do pluginu: http://codetidy.com/4186/ jak mogę je sensownie odseparować ? Chcę szczerej opinii na temat tego kodu, przyjmę każdą ilość cięgów ...

0

Na szybko, bo już nieszczególnie mi się dziś chce: live jest niezalecane, w nowych wersjach jQuery już chyba w ogóle nie działa. Zastąp przez on (inna składnia i trochę inna logika -> dokumentacja)

0

Przerobiłem kod: http://codetidy.com/4190/ Czy mógłbyś jeszcze raz rzucić okiem, proszę ? Dodałem funkcję .on() oraz przerobiłem kod na obiektowy jak pisałeś wcześniej w poście. A i małe pytanie

 var calendar {} 

<--co oznacza ten kod? to jakaś zmienna globalna, konstruktor czy jak? Bo nie wiedzę potrzeby tego kawałka kodu... więc przyznaję się prawdopodobnie go nie rozumiem

1 użytkowników online, w tym zalogowanych: 0, gości: 1