/ / jQuery - Verwendet Methoden für benutzerdefinierte Ereignisse - Javascript, Jquery

jQuery - Verwenden von Methoden für benutzerdefinierte Ereignisse - javascript, jquery

Ich habe ein benutzerdefiniertes jQuery-Ereignis wie dieses

jQuery(this).trigger({
type: "my_own_event",
data1: "foo",
data2: "bar"
});

Um einen Event-Handler anzubringen, muss ich den verwenden .on() Funktionieren Sie so.

jQuery(element).on( "my_own_event", function(e) {
//Do something
});

Wie verwende ich es wie jedes andere eingebaute Ereignis? .click(), .keyup(). Etwas wie das

jQuery(element).my_own_event(function(e){
//Do Something
});

Ich habe es versucht jQuery.fn um dies wie folgt zu tun

jQuery.fn.my_own_event = function(callback) {
jQuery(this).on("my_own_event",callback);
}

und es funktioniert auf Firefox 27.

Ist das der richtige Weg?

Ist es in Ordnung, im Ereignisnamen Unterstriche zu verwenden?

Antworten:

1 für die Antwort № 1

Das ist in Ordnung. Die Benennung ist in Ordnung, nur eine Frage der Konvention.

Sie sollten jedoch die Verknüpfungsfunktion optimieren. Das jQuery() ist nicht erforderlich, als this ist schon ein jQuery Objekt. Sie sollten das ursprüngliche Objekt auch zum Verketten zurückgeben.

Möglicherweise möchten Sie auch die leere Argumentversion des Aufrufs wie die integrierten Ereignisverknüpfungen behandeln, um das Ereignis auszulösen.

Hier ist, wie es die jQuery-Quelle selbst macht:

jQuery.fn[ name ] = function( data, fn ) {
return arguments.length > 0 ?
this.on( name, null, data, fn ) :
this.trigger( name );
};

Woher name ist das Ereignis wie click oder keyup. Dies behandelt auch das optionale data Argument, das setzen würde event.data in der Rückruffunktion.

Dann sind Sie vollständig mit den bestehenden Konventionen für die jQuery-Ereigniskombinationen einverstanden.

Ihr Beispiel könnte also geändert werden in:

jQuery.fn.my_own_event = function(data, callback) {
return arguments.length > 0 ?
this.on("my_own_event", null, data, callback) :
this.trigger("my_own_event");
};

1 für die Antwort № 2

Ja, das von Ihnen erstellte benutzerdefinierte Ereignis ist in Ordnung und der Name des Ereignisses entspricht auch der Standard-Namenskonvention für Ereignisse

Artikel von der offiziellen Jquery-Site:

das .trigger() Diese Methode kann sowohl Standard-Browser-Ereignisnamen als auch benutzerdefinierte Ereignisnamen auslösen, um angehängte Handler aufzurufen. Ereignisnamen sollten nur alphanumerische Zeichen, Unterstriche und Doppelpunktzeichen enthalten.

REF:

https://api.jquery.com/trigger/

Glückliche Kodierung :)