Metoda one
Metoda one permite adăugarea unui gestionar
de evenimente la un element. După ce evenimentul
funcționează o dată - gestionarul va fi
eliminat automat.
Sintaxă
Astfel atașăm un gestionar de evenimente la un element,
ca prim parametru sub formă de șir de caractere
se transmit unul sau mai multe evenimente separate
prin spații, al doilea - transmitem date sub formă de obiect JavaScript,
care sunt transmise gestionarului în proprietatea
event.data la declanșarea evenimentului. Al doilea parametru
este opțional. Al treilea transmitem funcția-gestionar,
în care se transmite obiectul evenimentului sau transmitem false:
$(selector).one(evenimente, [date], funcție-gestionar(obiect eveniment));
Ca al doilea parametru se poate transmite un
selector de filtrare suplimentar pentru descendenții din interiorul elementului,
al treilea - date suplimentare, care sunt transmise
gestionarului în proprietatea event.data la
declanșarea evenimentului. Al doilea și al treilea parametri
sunt opționali. Al patrulea transmitem
funcția-gestionar, în care se transmite obiectul evenimentului
și parametri suplimentari opționali. Dacă în locul
funcției-gestionar se transmite false, atunci funcția pur și simplu
va returna false:
$(selector).one(evenimente, [selector], [date], funcție-gestionar(obiect eveniment));
Se poate utiliza metoda one diferit,
atunci în primul parametru se transmite
un obiect JavaScript, unde cheile - tipul evenimentului, iar
valorile - funcția-gestionar, pe care am adăugat-o la
element:
$(selector).one({'tip eveniment': handler}, [selector], [date]);
Dacă nu transmitem un selector suplimentar, atunci evenimentul se declanșează pe elementul căruia i atașăm gestionarul, în caz contrar - pe elementul-descendent, care corespunde acelui selector (evenimente delegată).
Exemplu
Să la click pe paragraf să afișăm datele, care
le-am transmis în metoda one. La click-urile ulterioare
nimic nu se va întâmpla. Vom folosi
funcția-gestionar testFunc,
pe care am creat-o:
<p>click</p>
function testFunc(event) {
alert(event.data.text);
}
$('p').one('click', {text: 'aaa' }, testFunc);