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