jQuery $(document).ready und UpdatePanels: Ein raffinierter Look
Wenn Sie jQuery verwenden, um Mouseover-Effekte auf Elemente innerhalb eines UpdatePanels anzuwenden, Das anfängliche Laden der Seite funktioniert wie vorgesehen. Bei teilweisen Seitenaktualisierungen, die vom UpdatePanel initiiert werden, funktionieren die Mouseover-Effekte jedoch in diesem bestimmten Bereich nicht mehr.
Dies geschieht, weil das UpdatePanel den Inhalt seines Panels überarbeitet und so alle mit den vorherigen Elementen verbundenen Ereignisabonnements effektiv eliminiert . Um dieses Problem zu beheben, wird empfohlen, die erforderlichen Ereignisse nach jedem Update erneut zu abonnieren. Dies kann erreicht werden, indem $(document).ready für den ersten Ladevorgang mit dem PageRequestManager-Objekt von Microsoft für nachfolgende Updates kombiniert wird.
Der PageRequestManager, ein automatisch verfügbares JavaScript-Objekt, wenn ein UpdatePanel vorhanden ist, stellt ein endRequest-Ereignis bereit, das ausgelöst wird nach Abschluss des Updates. Dies kann genutzt werden, um die jQuery-Ereignisse erneut zu binden, wie unten gezeigt:
$(document).ready(function() { // Initial event binding }); var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_endRequest(function() { // Event re-binding after update });
Das PageRequestManager-Ereignis bietet Zugriff auf Sender und eventArgs und ermöglicht so eine detailliertere Kontrolle über die erneute Bindung. Weitere Einzelheiten finden Sie in der Dokumentation von Microsoft: msdn.microsoft.com/.../bb383810.aspx
Ein alternativer Ansatz, der sich besonders für hochdynamische Szenarien eignet, ist die Verwendung der .on()-Methode von jQuery. .on() bietet eine verbesserte Effizienz im Vergleich zu häufigen Neuabonnements. Es ist jedoch wichtig, die Dokumentation gründlich zu lesen, bevor Sie eine Entscheidung treffen, da nicht alle jQuery-Plugins einfach umgestaltet werden können, um .on() zu verwenden. In solchen Fällen bleiben erneute Abonnements eine praktischere Lösung.
Das obige ist der detaillierte Inhalt vonWie behalte ich jQuery-Mouseover-Effekte in ASP.NET UpdatePanels bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!