SmartMenus Tutoriál

Eventy a metody


V této části si ukážeme co jsou to metody a eventy. Občas se to může hodit, ale většinou to asi nepoužijete.

Eventy

Eventy nám umožňují nastavit si funkce, které se spustí po proběhnutí nějaké akce. Můžeme si například nastavit funkci, která se zavolá když uživatel najede myší na položku menu nebo když na ni třeba klikne. Funkci, kterou smartmenus zavolá po proběhnutí nějaké akce nastavíme pomocí metody jménem on. Této metodě předáváme typ eventu pro který se bude funkce volat a funkci samotnou. K názvům eventů vždy přidáváme text ".smapi". Pokud tedy chceme, nastavit funkci pro event activate, napíšeme activate.smapi.

// nastavení funkce, která se zavolá po kliknutí na položku menu
$('#moje-menu').on('click.smapi', function(e, item) {
    console.log("položka menu byla kliknuta");
});

// nastavení funkce, která se zavolá po otevření sub menu
$('#moje-menu').on('show.smapi', function(e, menu) {
    console.log("sub menu bylo otevřeno");
});

Zde je přehled všech eventů, kterým můžeme naslouchat:

activate

Spouští se když je položka menu aktivována a předtím než se zobrazí její sub menu, pokud jej má. Pokud ve funkci vrátíme false, tak se sub menu nezobrazí.

Parametry funkce: JQuery.Event objekt, položka menu (a element)

beforefirstshow

Spouští se pro každé sub menu po jeho prvním zobrazení. Pokud ve funkci vrátíme false, tak se sub menu nezobrazí.

Parametry funkce: JQuery.Event objekt, sub menu (ul element)

beforehide

Spouští se před zavřením sub menu. Pokud ve funkci vrátíme false, tak se sub menu nezavře.

Parametry funkce: JQuery.Event objekt, sub menu (ul element)

beforeshow

Spouští se před otevřením sub menu. Pokud ve funkci vrátíme false, tak se sub menu neotevře.

Parametry funkce: JQuery.Event objekt, sub menu (ul element)

blur

Spouští se když položka menu ztratí focus.

Parametry funkce: JQuery.Event objekt, položka menu (a element)

click

Spouští se po kliknutí na položku menu. Pokud ve funkci vrátíme false, tak se odkaz položky neotevře a pokud položka obsahuje sub menu, také se neotevře. Tento event se spouští také pro vypnuté položky menu.

Parametry funkce: JQuery.Event objekt, položka menu (a element)

focus

Spouští se když položka menu získá focus.

Parametry funkce: JQuery.Event objekt, položka menu (a element)

hide

Spouští se po zavření sub menu.

Parametry funkce: JQuery.Event objekt, sub menu (ul element)

hideall

Spouští se po zavření všech sub menu (třeba při kliknutí mimo menu).

Parametry funkce: JQuery.Event objekt

mouseenter

Spouští se při najetí myši na položku menu.

Parametry funkce: JQuery.Event objekt, položka menu (a element)

mouseleave

Spouští se při odjetí myši pryč z položky menu.

Parametry funkce: JQuery.Event objekt, položka menu (a element)

select

Spouští se při vybrání položky menu, než se načte její odkaz. Pokud ve funkci vrátíme false, tak se položka nevybere, její odkaz se nenačte. Tento event není spouštěn pro vypnuté položky menu.

Parametry funkce: JQuery.Event objekt, položka menu (a element)

show

Spouští se po otevření sub menu.

Parametry funkce: JQuery.Event objekt, sub menu (ul element)

Metody

Metody nám umožňují ovládat menu pomocí kódu. Máme k dispozici metodu pro zavření všech sub menu, vypnutí menu a tak dále. Až na dvě globální metody se všechny metody volají přes metodu smartmenus, kterou používáme také k inicializaci menu. Předáváme jí jméno metody a popřípadě také nějaké argumenty.

Globální metody

Globální metody se týkají všech menu instancí, které na stránce máme. Pokud je závoláme, tak se provedou u všech menu.

// zavře všechna sub menu všech menu na stránce
$.SmartMenus.hideAll();

// odstraní všechna menu na stránce
$.SmartMenus.destroy();

Globální metody máme jen tyto dvě:

destroy

Odstraní všechna menu na stránce.

hideAll

Zavře všechna sub menu všech menu na stránce.

Metody instancí

Metody, které voláme přes metodu smartmenus se týkají jen menu, na kterém metody voláme.

// vypnutí menu
$('#moje-menu').smartmenus('disable', true);

// zapnutí menu po jeho vypnutím
$('#moje-menu').smartmenus('enable');

// zavření všech sub menu
$('#moje-menu').smartmenus('menuHideAll');

Zde je přehled všech metod, které nám smartmenus poskytuje:

destroy

Odstraní menu.

disable

Vypne menu a popřípadě jej překryje průhlednou barvou.

Parametry: hodnota (true/false) určující jestli se má vypnuté menu překrýt průhlednou barvou

enable

Pomocí této metody můžeme menu zapnout, pokud jsme jej vypnuli.

itemActivate

Aktivuje položku menu. Pokud položka obsahuje sub menu, tak se zobrazí.

Parametry: vybraná položka menu pomocí JQuery, která se má aktivovat (např.: $('a#moje-polozka'))

menuHideAll

Zavře všechna otevřená sub menu.

popupHide

Skryje popup menu. Menu je popup menu, když má nastavené nastavení isPopup na hodnotu true. Pokud má menu nastavení isPopup nastaveno na hodnotu false, jedná se o permanentní menu a nemůže být touto metodou skryto.

Parametry: hodnota (true/false) určující jestli se má menu skrýt hned nebo se má počkat než uběhne čas nastavený pomocí nastavení hideTimeout (pokud předáme true, tak se menu skryje hned)

popupShow

Zobrazí popup menu. Menu je popup menu, když má nastavení nastavení isPopup na hodnotu true. Pokud má menu nastavení isPopup nastaveno na hodnotu false, jedná se o permanentní menu a nemůže být touto metodou zobrazeno. Jako parametry této metodě předáváme, na jakém místě se má popup menu zobrazit.

Parametry: hodnota pro CSS vlastnost left (například '100px'), hodnota pro CSS vlastnost top (například '100px')

refresh

Pomocí této metody můžeme menu re-inicializovat, když v něm provedeme nějaké DOM operace (když například přidáme nebo odstraníme položky).