Ich kann keine guten Ressourcen finden, wie benutzerdefinierte Ereignisse in jQuery tatsächlich implementiert werden. Wie, wie sie das Ereignis sprudelnden simulieren usw.Wie funktionieren benutzerdefinierte jQuery-Ereignisse genau?
8
A
Antwort
7
auf diese Weise:
// bubbling is internal
trigger: function(event, data, elem /*, bubbling */) {
// Event object or event type
var type = event.type || event,
bubbling = arguments[3];
// Handle a global trigger
if (!elem) {
// Don't bubble custom events when global (to avoid too much overhead)
event.stopPropagation();
// Only trigger if we've ever bound an event for it
if (jQuery.event.global[ type ]) {
jQuery.each(jQuery.cache, function() {
if (this.events && this.events[type]) {
jQuery.event.trigger(event, data, this.handle.elem);
}
});
}
}
// ... snip ...
// Trigger the event, it is assumed that "handle" is a function
var handle = elem.nodeType ?
jQuery.data(elem, "handle") :
(jQuery.data(elem, "__events__") || {}).handle;
if (handle) {
handle.apply(elem, data);
}
var parent = elem.parentNode || elem.ownerDocument;
// ... snip ....
if (!event.isPropagationStopped() && parent) {
jQuery.event.trigger(event, data, parent, true);
} else if (!event.isDefaultPrevented()) {
// ... snip ...
jQuery.event.triggered = true;
target[ targetType ]();
}
}
Was hier los ist wie folgt :
Wenn trigger
heißt jQuery überprüft, ob das Ereignis global ausgelöst wird ($.trigger("event_name");
).
Wenn es nicht global ausgelöst wird, und Ausbreitungs wurde und das betreffende Element Element einen Elternteil nicht gestoppt (!event.isPropagationStopped() && parent
) jQuery dann ruft das Triggerereignis manuell auf dem Mutterelement.
jQuery.event.trigger(event, data, parent, true);
Es ist ein bisschen mehr los - siehe event.js in dem jQuery-Quellcode.
1
Schauen Sie sich die tutorials
$(document).bind("eventType", ...);
// This is equivalent to the plugin's $.subscribe("eventType", ...);
$(document).trigger("eventType");
// equivalent to plugin's $.publish("eventType");
Kasse Auch diese SO question
Verwandte Themen
- 1. Wie genau funktionieren Laufzeitumgebungen?
- 2. Wie genau funktionieren Listen?
- 3. Wie genau funktionieren Generika?
- 4. Wie funktionieren Synonyms genau?
- 5. Wie genau funktionieren ausführbare Dateien?
- 6. Wie funktionieren PHP/MySQL Datenbankabfragen genau?
- 7. Wie genau funktionieren angefügte Eigenschaften in WPF?
- 8. Wie genau funktionieren Google App Engine-Protokolle?
- 9. Benutzerdefinierte Validierungsnachrichten funktionieren nicht?
- 10. Warum benutzerdefinierte Dialogschaltflächen nicht funktionieren?
- 11. Wie man benutzerdefinierte CSS-Schriften machen Rendern genau wie Entwürfe
- 12. Dagger2 Custom Scopes: Wie funktionieren benutzerdefinierte Bereiche (@ActivityScope)?
- 13. Codeception \ Util \ Stub Methoden :: genau und :: einmal nicht funktionieren
- 14. Benutzerdefinierte Dimensionen funktionieren in Google Analytics nicht
- 15. nginx + uwsgi benutzerdefinierte 502 wird nicht funktionieren
- 16. Benutzerdefinierte Django-Admin-Vorlagen funktionieren nicht
- 17. PayPal Benutzerdefinierte Zahlungsseiten funktionieren nicht mehr
- 18. NLog benutzerdefinierte LayoutRenderer - JSON: kann nicht funktionieren
- 19. Funktionieren benutzerdefinierte Schriftarten für formatierte Zeichenfolgen?
- 20. Benutzerdefinierte .NET-Serialisierung scheint nicht zu funktionieren
- 21. Wie funktionieren visuelle Programmiersprachen?
- 22. Wie funktionieren Pythons Klassenschließungen?
- 23. Wie genau ist DateTime.AddDays?
- 24. Wie genau funktioniert sockaddr_storage?
- 25. Wie funktioniert input.nextInt() genau?
- 26. Wann genau wird layoutSubviews für benutzerdefinierte UITableViewCell aufgerufen?
- 27. Benötigen genau einen Monat in benutzerdefinierte von daterangepicker
- 28. Wie SQL-Select-Anweisungen funktionieren
- 29. Wie genau funktioniert die Verknüpfung?
- 30. Wie funktionieren Windows NT-ACLs?
Ich denke, er wollte nicht eine API-Erklärung, sondern eine technische Erklärung, wie sie tatsächlich funktionieren. – ThiefMaster
@ThiefMaster Wenn das der Fall ist, ist der beste Weg zu lernen, die Quelle zu sehen :) http://james.padolsey.com/jquery/ –