Sto cercando di ottenere eventi JQuery per lavorare con viste parziali in ASP.NET MVC. Tuttavia, dopo aver caricato una vista parziale tramite Ajax, JQuery sembra non essere in grado di generare eventi per nessuno degli elementi nella vista parziale. Sospetto che questo problema si verificherà anche se utilizzi altri framework o librerie JavaScript per caricare codice html parziale con Ajax.Gli eventi JQuery non funzionano con ASP.NET MVC Visualizzazioni parziali
Ad esempio, si consideri il seguente esempio:
Controller:
public class TestController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult LoadPartialView()
{
return View("PartialView");
}
}
Index.aspx
<script type="text/javascript">
$(document).ready(function() {
$("#button").click(function() {
alert('button clicked');
});
});
</script>
<div>
<%using(Ajax.BeginForm("LoadPartialView", new AjaxOptions { UpdateTargetId="PartialView"})){ %>
Click <input type="submit" value="here" /> to load partial view.
<% } %>
</div>
<br /><br />
<% Html.RenderPartial("PartialView"); %>
PartialView.ascx
<div id="PartialView">
Click <input type="button" id="button" value="here"></input> to display a javascript message.
</div>
Una volta che la pagina viene caricata per esimo La prima volta, puoi fare clic su "Fai clic qui per visualizzare un messaggio Javascript" e riceverai un messaggio di avviso Javascript che dice "pulsante cliccato". Tuttavia, dopo aver fatto clic su "Fai clic qui per caricare la vista parziale", facendo clic sul pulsante che dovrebbe portare il messaggio di avviso Javascript non ha alcun effetto. Sembra che l'evento "click" non venga più attivato.
Qualcuno sa perché questo problema si verifica con JQuery e come risolvere? Questo problema si verifica anche con altri plugin JQuery che utilizzano eventi.
Fantastico. Questo funziona davvero. Secondo la documentazione ufficiale live() può essere utilizzato per collegare un gestore all'evento per tutti gli elementi che corrispondono al selettore corrente, ora o in futuro. L'unico inconveniente è che le altre persone che hanno scritto i plug-in non hanno apparentemente utilizzato il metodo live. Quindi, per farlo funzionare con i plug-in esistenti, qualcuno probabilmente dovrebbe scavare nel codice sorgente e modificarlo. – dritan
Vero. Questo o dopo che il contenuto è stato aggiunto alla pagina, è possibile richiamare il plug-in anziché solo al caricamento della pagina. Se la risposta è sufficiente, contrassegnarla come accettata ... – mkedobbs
Questa risposta è obsoleta, vedere la risposta di PEOudin. – Martin