| Autor | Zpráva | ||
|---|---|---|---|
| Myšák Profil * |
#1 · Zasláno: 4. 3. 2015, 12:02:53
Čaute,
připravil jsem si takový rádoby jednoduchý JS objekt na odkrývání a skrývání hamburger menu a nelíbí se mi na tom ta poslední metoda, nedá se to napsat líp, mohl by mi to někdo fundovaný zkontrolovati? Děkujii. /* Mobile version
---------------------------------------------------------------------------------------------------- */
var hamburger = {
init: function(el) {
this.el = $(el);
this.header = $('#header-mobile');
this.closeButton = $('.hamburger-close');
},
open: function(e) {
this.header.fadeIn();
e.preventDefault();
},
close: function(e) {
this.header.fadeOut();
e.preventDefault();
},
getElement: function(el)
{
return this[el];
}
};
// init
hamburger.init('.hamburger');
// open
hamburger.getElement('el').click(function(e){
hamburger.open(e);
});
// close
hamburger.getElement('closeButton').click(function(e){
hamburger.close(e);
}); |
||
| Chamurappi Profil |
#2 · Zasláno: 4. 3. 2015, 15:12:38
Reaguji na Myšáka:
Jestli se ti nelíbí, že jde přes hamburger.getElement získat i metody init, open a close, můžeš na skladování elementů používat něco jiného než this. Třeba zřídit si hamburger.elements = {}…
Jinak já bych celé to zadání řešil nastavením třídy na společném rodiči, dva onclicky přímo v HTML, každý by měnil jednu className, zbytek bych nechal na CSS.
|
||
| Myšák Profil * |
#3 · Zasláno: 4. 3. 2015, 15:29:33
Chamurappi:
Nešlo mi momentálně o to, že to jde lépe zapsat snažším JS v kombinaci s CSS. Spíš jsem chtěl překontrolovat logiku kódu (protože tohle je drobnost, až budu vytvářet komplexnější řešení, musím vědět jak na to, a nechytat špatné návyky). To, že jde získat i metody , ano, máš pravdu, ale klidně tam zřídím white words pole. Spíš se ta metoda nějak nezdá, jestli se to dá vůbec takhle řešit, vypadá to podle mě trošku divně - tím myslím return this[el];.
Děkuji za názor. |
||
| 1Pupik1989 Profil |
#4 · Zasláno: 4. 3. 2015, 23:05:59
Tak nepoužívej getElement na vracení čehokoliv, ale napiš jí bez argumentů.
return this.el; Mezi námi je ta metoda jen obal k ničemu. Úplně klidně můžeš napsat hamburger.el. Dej té vlastnosti logický název a nemusíš to řešit. Nebo rozšiř jquery o metody ala hamburgerOpen
|
||
|
Časová prodleva: 12 let
|
|||
0