Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Chowające się menu
WiruSSS
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 7
Dołączył: 3.02.2007

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


Witam

Na wstępie chcialbym zaznaczyć, że stworzenie tego nie nastręcza mi problemów. Bardziej nie daje mi spokoju czy aby nie robię tego jakoś naokoło, nieoptymalnie. Być może istnieje jakiś wygodniejszy nieoczywisty dla mnie sposób?

http://jsfiddle.net/WiruSSS/zPXUK/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lukasz1985
post
Post #2





Grupa: Zarejestrowani
Postów: 205
Pomógł: 43
Dołączył: 5.03.2012

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


Wow... ok, z mojej strony powiem tak:
Cytat
..a jeszcze odnośnie var i przecinków. Tutaj chyba też jest kilka zdań na ten temat. Ja się trzymam konwencji Stoyana Stefanova. Zysk wydajności wg zasady deklaracji jak najbliżej użycia wg mnie jest na tyle znikomy, że wolę jednak bardziej czytelny dla mnie sposób, wpierw wszystko deklaruję, potem używam.


tutaj mi akurat o wydajność nie chodziło... bo ja właśnie uważam deklarowanie zmiennych tam gdzie się pojawiają za bardziej czytelne w większości przypadków, są od tego wyjątki.

Na temat Function.bind(context) czyli obiekt.click(pokaz.bind(this));... ta funkcja zwraca nową funkcję, która zawsze wykona się w kontekście tego co jest w zmiennej "context", czyli w twoim przypadku - "this". Chodzi ot to, że używając tego podejścia, które przedstawiłeś - gdybyś w którejś z tych funkcji anonimowych użył słowa this to miałbyś w nim pewnie obiekt DOM na którym jest wykonywany click. Używając funkcji "bind" w kontekście zawsze będziesz miał obiekt "slideMenu".

Gdybyś miał coś takiego, bez używania "bind":
[JAVASCRIPT] pobierz, plaintext
  1. showMenu: function()
  2. {
  3. var menu = $(this).children();
  4.  
  5. menu.find('li:first-child').hide();
  6. menu.find('li:last-child').show();
  7. menu.animate({'left': 0});
  8.  
  9. this.hideMenu(); // tu wyskoczyłby Ci error !!!!
  10. },
  11.  
[JAVASCRIPT] pobierz, plaintext


a z użyciem bind... wszystko by było ok (pomijając fakt, że 2 funkcje animate by sie ze sobą pogryzły, ale nie chodzi tu o funkcjonalność tylko logikę "bind").

Mi teraz Twój kod bardzo się podoba. JS to język programowania, a mówiąc po polsku nie bełkoczemy tylko mówimy do rzeczy (IMG:style_emoticons/default/smile.gif) .

Przy okazji zauważ, że gdybyś z innego miejsca skryput chciał zamknąć "slideMenu" to wystarczy slideMenu.hideMenu();


EDIT: Jeszcze jedna sprawa: zamiast pisać w każdej metodzie (funkcji) "var menu = $(this).children();" mógłbyś to zapisać właśnie w obiekcie "slideMenu", ale do tego potrzebujesz konstruktora "SlideMenu".... aby każde menu było osobnym obiektem SlideMenu. No ale to już jak chcesz.

Ten post edytował lukasz1985 12.09.2013, 19:46:56
Go to the top of the page
+Quote Post

Posty w temacie
- WiruSSS   Chowające się menu   12.09.2013, 13:23:08
- - kamil4u   Robisz to dobrze - tak jak się powinno. Inne uwagi...   12.09.2013, 15:22:39
- - lukasz1985   Ja bym nie robił takich rzeczy z definicjami zmien...   12.09.2013, 16:06:57
- - WiruSSS   ..hmm ..nie do końca się zrozumieliśmy ...to jest ...   12.09.2013, 16:45:40
- - lukasz1985   Wow... ok, z mojej strony powiem tak: Cytat..a jes...   12.09.2013, 19:36:58
- - WiruSSS   ..no niestety z moim programowaniem tak jest, zajm...   12.09.2013, 20:49:29
- - lukasz1985   Kilka spraw odnośnie tego kodu: - nie dajesz osob...   14.09.2013, 21:49:36
- - WiruSSS   Cytat- nie CSS decyduje o tym po której stronie ma...   14.09.2013, 23:26:35
- - lukasz1985   Źle to robisz, nie powiem Ci czemu bo do tego wyst...   15.09.2013, 10:46:33
- - WiruSSS   Ale to, że robię to inaczej niż zrobiłby to kto in...   15.09.2013, 17:54:54
- - PrinceOfPersia   CytatDla jasności jeszcze raz napiszę: Czy da się ...   16.09.2013, 07:20:12
- - lukasz1985   Ok. To bawcie się w deklarowanie zmiennych konfigu...   17.09.2013, 10:32:40
- - PrinceOfPersia   Zamiast się mądrzyć i odsądzać od czci i wiary inn...   17.09.2013, 11:33:12
- - lukasz1985   Funkcja jest obiektem w JS. Ale skoro tego nie wie...   17.09.2013, 11:39:56
- - PrinceOfPersia   Właśnie w idealny sposób pokazałeś, że nie umiesz ...   17.09.2013, 11:49:32
- - lukasz1985   To po co wcześniej ta uwaga: Cytatnie pisałem o o...   17.09.2013, 12:24:01
- - WiruSSS   ...ale się gorąco zrobiło. W zasadzie skypt miał b...   17.09.2013, 18:16:55
- - lukasz1985   Jeśli chcesz mieć frajdę z tego co robisz - rób el...   18.09.2013, 12:12:30


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: 3.10.2025 - 06:09