Heim  >  Artikel  >  Web-Frontend  >  Lassen Sie uns kurz über die Ereignisnamen und Namespaces von jquery sprechen

Lassen Sie uns kurz über die Ereignisnamen und Namespaces von jquery sprechen

一个新手
一个新手Original
2017-09-08 13:46:051780Durchsuche

Vorwort

In der offiziellen API von jquery gibt es einige Beschreibungen von Namespaces. Die Adresse lautet: http://api.jquery.com/on/ Es gibt einige englische Einführungen mit dem Titel „Ereignisnamen“. und Namespaces“ finden Sie weiter unten eine Einführung. Wenn einige Freunde es nicht sehr gut verstehen, möchte ich es hier kurz vorstellen!

jQuery-Ereignis-Namespace

Schauen wir uns zunächst etwas Code an:

$(“#haorooms”).on("click.a",function(){});$(“#haorooms”).on("click.a.bb",function(){});$(“#haorooms”).on("dbclick.a",function(){});$(“#haorooms”).on("mouseover.a",function(){});$(“#haorooms”).on("mouseout.a",function(){});

Natürlich können wir bind auch für die Ereignisbindung verwenden. Wenn wir den obigen Code sehen, können wir unseren Namen mit einem Punkt nach dem Ereignis hinzufügen, das den Ereignis-Namespace darstellt. Der sogenannte Ereignis-Namespace besteht darin, nach dem Ereignistyp einen Alias ​​in Punktsyntax anzuhängen, um auf das Ereignis zu verweisen, z. B. „click.a“, wobei „a“ der Alias ​​des aktuellen Ereignistyps von click ist, d Ereignis-Namensraum.

Wenn wir den folgenden Namespace löschen möchten:

$(“#haorooms”).on("click.a.bb",function(){});

können wir verwenden:

$(“#haorooms”).off("click.a.bb");//直接删除bb命名空间 【推荐】$(“#haorooms”).off(".bb"); //直接删除bb命名空间 【推荐】$(“#haorooms”).off(".a"); //删除.a命名空间下面所有的子空间【包括.a.bb   .a.cc等等,.a是.bb的父级,因此.a下面的都会删掉】$(“#haorooms”).off("click");//直接解绑click,下面的命名空间都会删除。

Es sollte beachtet werden, dass:

Wenn wir den folgenden Code schreiben:

$(“#haorooms”).on("click",function(){});$(“#haorooms”).on("click.a",function(){});$(“#haorooms”).on("click.a.bb",function(){});

Dann müssen wir Trigger verwenden, um das Klickereignis auszulösen, das heißt, das auszulösen Ersteres. Wäre es nicht so, dass sowohl click.a als auch click.a.bb ausgelöst werden, also wie kann ich dieses Problem lösen? Ich möchte nur click auslösen, aber nicht click.a und die folgenden Namespaces?

Das spielt keine Rolle! Es gibt folgende Lösungen:

Wenn an den Ereignistyp ein Ausrufezeichen angehängt wird, bedeutet dies, dass ein bestimmter Ereignistyp ausgelöst wird, der den Namespace nicht enthält.

Wenn wir nur einen Klick auslösen möchten, können wir so schreiben:

$(“#haorooms”).trigger("click!")

Nur ​​BB auslösen, können wir so schreiben:

$(“#haorooms”).trigger("click.a.bb");

Mit Namespace , es kann bequem sein. Wir leiten die gleiche Veranstaltung! ! !

Benutzerdefinierte Ereignisse

Ich werde es hier nicht beschreiben! Alle benutzerdefinierten Ereignisse können über jQuery-Methoden ausgelöst werden. Im folgenden Beispiel wird beispielsweise ein Verzögerungsereignistyp angepasst, an das Eingabeelementobjekt gebunden und dann das benutzerdefinierte Ereignis im Schaltflächenklickereignis ausgelöst.

$("input").bind("delay",function(event){
    setTimeout(function(){
          alert(event.type);
    },1000);});$("input").click(function(){
      $("input").trigger("delay"); //触发自定义事件});

Benutzerdefinierte Ereignisse sind keine Ereignisse im eigentlichen Sinne. Sie können als benutzerdefinierte Funktionen verstanden werden.

Durch die obige Einführung frage ich mich, ob Sie ein tieferes Verständnis für die Ereignisnamen und Namespaces von jquery haben! Ich freue mich auf Ihre Nachricht und Ihren Austausch!


Das obige ist der detaillierte Inhalt vonLassen Sie uns kurz über die Ereignisnamen und Namespaces von jquery sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn