2009-05-12 12 views
5

Ho un piccolo problema con questa configurazione qui ho un elenco di file .ascx e tutti svolgono compiti diversi in termini di calcoli al controller stesso. Quindi sulla mia pagina .aspx faccio clic su un Ajax.ActionLink() e questo renderà quello specifico file .ascx in base all'elemento su cui ho fatto clic. All'interno di quello .ascx ci sono 1-3 eventi che genereranno 2 di questi sono onclick eventi e 1 è onload. Gli eventi onclick sono più facili da gestire in termini di I hardcode direttamente nell'evento di controlli come onclick="$("#toggleMe3").slideToggle("slow");" e il onload deve essere eseguito quando viene caricato il .ascx che stavo testando questo in una chiamata $(document).ready(function(){});, questo funziona bene nel .aspx pagina ma non appena provo ad aggiungerlo nella pagina non viene caricato e il suo ideale è che funzioni ma non ho idea del perché no. In effetti nulla nei tag di script funziona se inserisco direttamente nella pagina .ascx che funzionano solo se sono codificati negli eventi del controllo, almeno alcuni di essi; il onload e onprerender non sparano.

+0

stesso problema qui. –

risposta

1

Ho avuto lo stesso problema, dopo che lo script di postback parziale specificato in $ (document) .ready non è stato eseguito. Ho trovato la soluzione qui MSDN - PageRequestManager Class

Sembra l'aggiunta di uno script come sotto corregge il problema

<script type="text/javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myReadyFunction); 
</script> 
1

Ho avuto successo usando $ (document) .ready nei miei partial che vengono caricati tramite XHR. Le visualizzazioni che stai caricando tramite XHR generano eccezioni JavaScript? O contengono HTML malformato?

Io di solito ho il mio $ (document) Metodo .ready in fondo alla mia parziale, che si carica tramite Ajax, come ...

<script type="text/javascript"> 
$(document).ready(function(){ callMyFunction(); }); 
</script> 
+0

Purtroppo questo non funziona per me, ho aggiunto i tag script in fondo ancora senza fortuna. Sto usando MicrosoftAjax.js per controllare le chiamate Ajax e non la funzione jjery javery. – Ayo

+0

Questo funziona per me, almeno in FF3.5 e IE7 su Windows XP. Tuttavia non capisco perché, dato che la documentazione di jQuery non gestisce questo caso ... –

+0

ha funzionato per me su chrome – Roch

1

ho avuto difficoltà a capire la tua domanda ... ma Eccolo.

Se si sta caricando la data utilizzando le chiamate AJAX, l'evento $ (document) .ready() non verrà attivato, poiché la pagina è già stata caricata. Stai caricando più dati ora.

Se si conoscono già i controlli che verranno visualizzati, precaricare il codice JavaScript, ma anziché eseguire il binding utilizzando il gestore di eventi click, utilizzare il gestore live.

così

$("#myControl").click(....); 

si trasforma in

$("#myControl").live("click", ....); 

Scusate se questo non è quello che stavate cercando.

+0

questo funzionerebbe all'interno della mia pagina ascx? – Ayo

+0

se la pagina non è caricata dinamicamente, sì. Altrimenti è necessario il live per precaricare i gestori di eventi dall'aspx. Altrimenti dovrai aggiungere altri ganci sul lato client per sapere quando il contenuto è caricato, e chiamare il javascript caricato. –

Problemi correlati