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.
risposta
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>
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>
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
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 ... –
ha funzionato per me su chrome – Roch
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.
questo funzionerebbe all'interno della mia pagina ascx? – Ayo
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. –
stesso problema qui. –