Jelikož jsme právě hovořili o událostech, je nyní vhodný čas zmínit vlastní události. Všechny události, o kterých jsme zatím mluvili, jsou takřka „skutečné“ události. Události, které vznikají v DOM na základě skutečných věcí, ke kterým dochází, například kliknutí nebo stisknutí klávesy. Tyto události lze v jQuery uměle „spustit“. Například k „falešnému“ kliknutí na tlačítko můžete:
$("#some-button").trigger("click");
Poté se všechny obslužné rutiny kliknutí vázané na toto tlačítko spustí, jako by uživatel na toto tlačítko skutečně klikl. Ale co kdybychom udělali:
$("#some-button").trigger("dance");
Co se potom stane? „Tanec“ není „skutečná“ událost. Ale žádná chyba nebude vyvolána. Stává se, že k tomuto tlačítku pravděpodobně nejsou vázáni žádní „taneční“ handleri. Ale mohlo by existovat a to je v podstatě to, co je vlastní událost. Událost se jménem, které si jen vymyslíte.
Proč bys to dělal? Většinou z organizačních důvodů. Možná byste rádi oddělili svůj JavaScript, který zpracovává události a akce, a váš JavaScript, který zpracovává data a administrativní záležitosti. To je velmi rozumné. Pokud by toto tlačítko bylo možná tlačítko „Uložit nastavení“, můžete jednoduše vypálit vlastní událost s názvem „uložit nastavení“ a jinde mít obslužnou rutinu, která čeká na spuštění této události a provede skutečné uložení dat. To je v podstatě to, co jsme udělali v příkladu z videa.
Dalším případem použití pro vlastní události je vytváření obecných komponent uživatelského rozhraní. Mluvím o tom v tomto příspěvku na blogu.
Možná vytváříte akordeonový efekt jako součást uživatelského rozhraní. Akordeon dělá to, co všechny akordeony, otevírá a zavírá panely na kliknutí / klepnutí. Vaše součást uživatelského rozhraní to dělá velmi pěkně. Vývojář, který používá tuto akordeon, nyní může mít speciální a jedinečné věci, které s ní chtějí mít. Řekněme, že pro nastavení účtu používají akordeon, a když uživatel zavře panel, chce uložit data z prvků formuláře na tomto panelu. Tradiční model může pro autora této komponenty uživatelského rozhraní akordeonu nabídnout funkce zpětného volání, když k této akci dojde. Když inicializujete akordeon, předáte funkce zpětného volání, které chcete volat, když se tyto věci stanou. To je jedna cesta dolů. Další cestou by bylo, aby akordeon pouze automaticky vypálil vlastní události pro všechny relevantní akce, které provádí.Když se tento panel zavře, může vystřelit apanelClosed
událost na samotném akordeonovém prvku. Pak by se vývojáři, kteří s ním pracují, mohli jen vázat na tyto události. Je to jen další cesta, po které se můžete vydat z organizačních důvodů, které mohou být docela elegantní.