2009-05-12 4 views
5

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.

+0

gleiche Problem hier. –

Antwort

1

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> 
1

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> 
+0

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

+0

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 ... –

+0

hat es für mich auf chrome funktioniert – Roch

1

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.

+0

würde dies innerhalb meiner ascx-Seite funktionieren? – Ayo

+0

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. –