Methode one
Die Methode one ermöglicht es, einen Ereignishandler
zu einem Element hinzuzufügen. Nachdem das Ereignis
einmal ausgelöst wurde - wird der Handler
automatisch entfernt.
Syntax
So fügen wir einen Ereignishandler zu einem Element hinzu,
als erster Parameter wird eine oder mehrere durch Leerzeichen
getrennte Ereignisse als String übergeben,
als zweiter - übergeben wir Daten in Form eines JavaScript-Objekts,
die an den Handler in der Eigenschaft
event.data bei Auslösung des Ereignisses übergeben werden. Der zweite Parameter
ist optional. Als drittes übergeben wir die Handler-Funktion,
an die das Ereignisobjekt übergeben wird, oder wir übergeben false:
$(Selektor).one(Ereignisse, [Daten], Handler-Funktion(Ereignisobjekt));
Als zweiten Parameter kann ein zusätzlicher
filternder Selektor für Nachfahren innerhalb des Elements übergeben werden,
als drittes - zusätzliche Daten, die an
den Handler in der Eigenschaft event.data bei
Auslösung des Ereignisses übergeben werden. Der zweite und dritte Parameter
sind optional. Als viertes übergeben wir die
Handler-Funktion, an die das Ereignisobjekt
und optionale zusätzliche Parameter übergeben werden. Wenn statt
der Handler-Funktion false übergeben wird, gibt die Funktion einfach
false zurück:
$(Selektor).one(Ereignisse, [Selektor], [Daten], Handler-Funktion(Ereignisobjekt));
Man kann die Methode one auch anders verwenden,
dann wird im ersten Parameter ein
JavaScript-Objekt übergeben, wo Schlüssel - der Ereignistyp sind und
Werte - die Handler-Funktion, die wir zum
Element hinzugefügt haben:
$(Selektor).one({'Ereignistyp': Handler}, [Selektor], [Daten]);
Wenn wir keinen zusätzlichen Selektor übergeben, dann wird das Ereignis auf dem Element ausgelöst, an das wir den Handler angehängt haben, andernfalls - auf dem Nachfahren-Element, das diesem Selektor entspricht (delegierte Ereignisse).
Beispiel
Lassen Sie uns beim Klick auf den Absatz die Daten ausgeben, die
wir an die Methode one übergeben haben. Bei nachfolgenden Klicks
wird nichts passieren. Wir verwenden die
Handler-Funktion testFunc,
die wir erstellt haben:
<p>click</p>
function testFunc(event) {
alert(event.data.text);
}
$('p').one('click', {text: 'aaa' }, testFunc);