anbringen von Veranstaltungen zu Fenster.on("load", function(){}) jquery
Ich geschrieben habe einige code, der funktioniert wie ein jquery-plugin, das zuweisen von css, um Elemente, basierend auf Ihre Höhe im Verhältnis zueinander. Ich bin stecken versuchen, herauszufinden, wie um das plugin zu arbeiten, ohne Aufruf/wickelte Sie in ein Fenster.on("load", function(){}) block von AUßERHALB der Funktion. Ich sollte hinzufügen, dass alles gut läuft wenn ich es aufrufen innerhalb einer externen
$(window).on("load",function(){})
block. Meine zwei Fragen sind:
- wie viele andere Zeiten können ich weisen Sie Aktionen zu die $(window).on("load", function(){}) event? Wenn ich zuordnen, etwas mehr als einmal wird jede nachfolgende Abtretung ersetzen die erste und sollte ich etwas hinzufügen wie die javascript addEventListener-Methode statt?
- Wie ordne ich meine Aktion zu diesem Ereignis in die
(function( $ ) { $.fn.resizeCss = function() {}; })(jQuery);
block?
echt ratlos hier, jede mögliche Hilfe würde sehr geschätzt werden.
InformationsquelleAutor pepper | 2013-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie in der Lage sein, um Aktionen zuweisen, dass
$(window).on("load"...
so oft wie Sie wollen. Einer der wichtigsten Vorteile der Verwendung von.on
ist, dass es die Möglichkeit gibt, namespace-Ihre event-Handler, wenn Sie so wählen.Beispielsweise in:
den
loading1
ist der name der jeweiligen Instanz der event-handler. Dies ist hilfreich, weil Sie können wählen, zu löschen Handler basierend auf Ihrem Namen, zusätzlich zu Ihren Veranstaltungen.Beispiel:
wird die Bindung NUR die
loading1
event-handler, wo, wiewird unbind ALL die
load
event-Handler.Als für Ihre zweite Frage, ich entschuldige mich für die Verwirrung, aber ich war falsch
(function($)
. Es bedeutet eigentlich, dass der code innerhalb es ist self-executing. In anderen Worten, führt er auf seine eigene Zeit, automatisch und brauchen nicht in einem handler.Ich noch vorschlagen, die Sie binden Sie extern, wie es besser ist die Codierung der Praxis und wird in der Regel um Ihr plugin mehr erweiterbar.
UPDATE
Basierend auf Ihre Kommentare, ich kann Ihnen sagen, dass Sie kann es so machen, dass die
$(window).load
muss nicht eingegeben werden, indem die Entwickler, die Ihr plugin, aber es ist sehr schlecht Codierung der Praxis. Es würde Ihr plugin deutlich weniger erweiterbar, jedoch. Auch, wenn Sie dies tun mit$(document).ready
es würde nur funktionieren, wenn der Aufrufer das plugin ist nicht ein element. Der Grund für dieses ist, weil das element, dass heißt es würde haben gewesen gefunden von jQuery, und, damit es gefunden wurde, muss das Dokument bereit gewesen, für ihn sichtbar zu sein.Was Sie tun können, ist fügen Sie die
$(window).load
handler in Ihr plugin selbst. In anderen Worten, es wäre innerhalb der Funktion deklariert, mit$.fn....
. Sie würden wahrscheinlich wollen auch ein feedback, so dass Ihre Entwickler können sagen, ob die Funktion aufgerufen wurde, bevor das Fenster geladen wurde. Jedoch, wie bereits erwähnt, habe ich sehr abraten. Die bessere Sache zu tun, ist eine Bemerkung in der Dokumentation, die das plugin sollte in der Regel von der$(window).load...
Veranstaltung. Das ist wirklich etwas, was sein sollte, bleibt dem Entwickler.So geben Sie mir besser-Kontext, und so kann ich Sie besser unterstützen Sie, darf ich Fragen, warum Sie möchten, binden Sie es in die
document.ready
? In der Zwischenzeit werde ich schauen, um zu überprüfen, dass die Deklaration in in dieser Art und Weise IST, in der Tat, gilt (was es sollte)Es ist nicht so, dass ich binden wollen, die es innerhalb des Dokuments bereit, es ist, ich will schreiben Sie die Funktion so, dass wer auch immer verwendet, es muss nicht wickeln Sie es in Ihren eigenen $(window).on("load", function(){}) event. Es scheint wie ein unnötiger Schritt ist in diesem Fall, und sollte Hinzugefügt werden, um die definition der Funktion selbst.
v. gute Antwort, aber, den $(window).on("load".function(){}) innerhalb der jquery-plugin-definition nicht funktioniert. I"m die Entsendung einer fidde. In Bezug auf Erweiterbarkeit, sehe ich nicht, was ist falsch mit dem anbringen der Fall, wenn ich es Tue, unter einem Namensraum, der nicht auf andere Fenster.on("load", function(){}) Ereignisse, wie früher diskutiert.
Ich spreche über die Erweiterbarkeit von plugin, nicht
$(window).load
. Es gibt einen Grund, warum es als schlechter Programmierstil. Dinge wie diese gemeint sind, bleibt dem Entwickler - shortcuts, in diesem Fall sind nicht nur schlecht beraten, sondern auch verpönt.InformationsquelleAutor Zachary Kniebel