Autor Zpráva
Myšák
Profil *
Č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
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 *
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
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

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: