Hören Sie mit Vanilla JS auf das jQuery-Ereignis

Lesezeit: 3 Minuten

Benutzeravatar von thatidiotguy
dieser Idiot

Also versuche ich festzustellen, ob es möglich ist, mit jQuery mit Vanilla JS auf Ereignisse zu lauschen. Ich habe diese Frage gefunden:

Hören Sie sich das jQuery-Ereignis ohne jQuery an

was es definitiv für Version 1 von jQuery beantwortet. Wie wäre es jedoch mit Version 3?

Ich habe eine Geige, die ich zum Testen zusammengestellt habe, aber ich kann den ersten Submit nicht dazu bringen, mit irgendeiner Version von jQuery zu arbeiten. Übersehe ich etwas oder verwendet das Ereignismodell in jQuery 3 immer noch nicht das DOM-Ereignismodell?

https://jsfiddle.net/ydej5qer/1/

Hier ist der Code in der Geige:

HTML:

<div id="div1">
<p>
This is div1. My event was added via jQuery and is listened for by vanilla JS.
</p>
<p>
  Enter the number 2 to have the event fired.
</p>
<input type="text" id="input1" />
<button id="button1">
Submit
</button>
</div>
<div id="div2">
  <p>
    This is div2. My event was added via vanilla JS and is listened for by jQuery.
  </p>
  <p>
    Enter the number 2 to have the event fired.
  </p>
  <input type="text" id="input2" />
  <button id="button2">
  Submit
  </button>
</div>

Javascript:

var $input1 = $("#input1");
var $input2 = $("#input2");
var input1 = document.getElementById("input1");
var input2 = document.getElementById("input2");

var event1 = "event1";
var event2 = "event2";

$("#button1").click(function() {
    if (+$input1.val() == 2) {
    $input1.trigger(event1, {message: "Event 1 triggered!"});
  }
});

input1.addEventListener(event1, function(e) {
    console.log("Event 1 triggered! message=" + e.detail.message);
});

$("#button2").click(function() {
    if (+$input2.val() == 2) {
    var event = new CustomEvent(event2, {detail: {message: "Event 2 triggered!"}});
    input2.dispatchEvent(event);
  }
});

$input2.on(event2, function(e) {
    console.log("Event 2 fired, but I don't know how to get the message!");
});

  • Für den Teil “Ist es möglich?” würde ich sagen, dass es so ist. jQuery ist keine binäre Komponente oder etwas Esoterisches, es ist nur ein Haufen Vanilla-JavaScript-Code. 😉

    – Alvaro González

    1. Dezember 2016 um 16:05 Uhr

  • @ÁlvaroGonzález Was genau schlagen Sie vor? Wie würde Vanilla JS auf private jQuery-Ereignisstrukturen zugreifen? Schlagen Sie vor, dass ich die Kernbibliothek ändere?

    – dieser Idiot

    1. Dezember 2016 um 16:52 Uhr

  • Ich schlage nichts vor (bitte beachten Sie, dass es sich um einen Kommentar handelt, gefolgt von einem Smiley, nicht um eine Antwort). Entschuldigung, wenn ich etwas anderes vorgeschlagen habe.

    – Alvaro González

    1. Dezember 2016 um 16:55 Uhr

  • Siehe stackoverflow.com/a/18901932/673457

    – Ted Weißkopf

    1. Dezember 2016 um 17:15 Uhr

  • @TedWhitehead Dieser Fall verweist auf genau denselben Fehlerbericht, der in dem Fall enthalten ist, den ich in meiner Frage verlinkt habe. Diese Frage bietet keine neuen Informationen über jQuery 3.

    – dieser Idiot

    1. Dezember 2016 um 17:52 Uhr

Die kurze Antwort lautet, dass dies unmöglich ist, da jQuery eine Ereignisschicht über Vanilla JS bereitstellt. Das bedeutet, dass Vanilla JS nicht mit dieser hinzugefügten Schicht kommunizieren kann.

Zusammenfassend lässt sich sagen, dass jQuery Vanilla JS-Ereignisse abfangen kann, aber Vanilla JS kann keine von jQuery hinzugefügten Ereignisse abfangen.

Diese Frage ist etwas alt, hat aber immer noch einen hohen Stellenwert, also für alle, die nach einer Möglichkeit suchen, jQuery-Ereignisse mit Vanilla JS abzuhören: Es ist jetzt mit dem treffenden Namen möglich jquery-events-to-dom-events Bibliothek.

1442780cookie-checkHören Sie mit Vanilla JS auf das jQuery-Ereignis

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy