Ich habe ein kleines Problem mit diesem Setup hier habe ich eine Liste von .ascx
Dateien und sie alle verschiedene Aufgaben in Bezug auf Berechnungen an den Controller selbst. Also auf meiner .aspx
Seite klicke ich auf eine Ajax.ActionLink()
und dies wird diese spezifische .ascx
Datei basierend auf dem Element, das ich geklickt habe, rendern. Innerhalb dieser .ascx
sind 1-3 Ereignisse, die 2 von ihnen auslösen werden onclick
Ereignisse und 1 ist onload
. Die onclick
Event (s) sind einfacher zu arbeiten in Bezug auf ich kann es direkt in der Steuerung Ereignis wie so fest onclick="$("#toggleMe3").slideToggle("slow");"
hart und und die onload
muss ausgeführt werden, wenn die .ascx
geladen wird ich dies in einem Aufruf getestet, das funktioniert gut in der .aspx
Seite aber sobald ich versuche, es in die .aspx
Seite hinzuzufügen es lädt nicht und es ist ideal, dass dies funktioniert, aber ich habe keine Ahnung warum nicht. In der Tat funktioniert nichts in den Skript-Tags, wenn ich direkt in die .ascx
Seite einfüge, funktionieren sie nur, wenn sie in die Ereignisse des Steuerelements fest codiert sind, gut einige von ihnen mindestens; die onload
und onprerender
nicht feuern.
Antwort
Ich hatte das gleiche Problem, nachdem teilweise Postback-Skript in $ (Dokument) angegeben wurde .ready wurde nicht ausgeführt. Ich fand hier Lösung MSDN - PageRequestManager Class
Sieht aus wie ein Skript hinzugefügt, wie unten behebt das Problem
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myReadyFunction);
</script>
Ich hatte Erfolg mit $ (Dokument) .ready in meinen Partials, die über XHR geladen werden. Sind die Ansichten, die Sie über XHR laden, JavaScript-Ausnahmen? Oder enthalten sie fehlerhaftes HTML?
ich habe in der Regel meine $ (document) .ready Methode am unteren Rande meines Teils, dass ich über Ajax geladen werden, wie ...
<script type="text/javascript">
$(document).ready(function(){ callMyFunction(); });
</script>
Leider klappt das bei mir nicht, ich habe die Script Tags auf dem Boden noch kein Glück hinzugefügt. Ich verwende MicrosoftAjax.js, um die Ajax-Aufrufe und nicht die Jquery Ajax-Funktion zu steuern. – Ayo
Das funktioniert bei mir, zumindest in FF3.5 und IE7 unter Windows XP. Wie auch immer, ich verstehe nicht warum, da die jQuery-Dokumentation diesen Fall nicht behandelt ... –
hat es für mich auf chrome funktioniert – Roch
ich eine harte Zeit zu verstehen, Ihre Frage hatte ... aber hier kommt's.
Wenn Sie das Datum mit AJAX-Aufrufen laden, wird das Ereignis $ (document) .ready() nicht ausgelöst, weil die Seite bereits geladen wurde. Sie laden gerade jetzt mehr Daten.
Wenn Sie die Steuerelemente bereits kennen, laden Sie das JavaScript vorab, aber verwenden Sie den Live-Handler, anstatt nur mit dem Click-Ereignishandler zu binden.
so
$("#myControl").click(....);
verwandelt sich in
$("#myControl").live("click", ....);
Sorry, wenn dies nicht der Fall ist, was Sie suchen.
würde dies innerhalb meiner ascx-Seite funktionieren? – Ayo
Wenn die Seite nicht dynamisch geladen ist, ja. Andernfalls benötigen Sie das Live, um die Ereignishandler aus dem aspx zu laden. Andernfalls müssen Sie einige weitere Hooks auf der Client-Seite hinzufügen, um zu wissen, wann der Inhalt geladen ist, und das geladene Javascript aufrufen. –
gleiche Problem hier. –