J'essaie de faire fonctionner les événements JQuery avec des vues partielles dans ASP.NET MVC. Toutefois, après avoir chargé une vue partielle via Ajax, JQuery ne semble pas pouvoir déclencher des événements pour l'un des éléments de la vue partielle. Je pense que ce problème se produira également si vous utilisez d'autres frameworks ou bibliothèques JavaScript pour charger du code html partiel avec Ajax.Les événements JQuery ne fonctionnent pas avec ASP.NET MVC Vues partielles
Par exemple, considérons l'exemple suivant:
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>
Une fois que la page se charge pour th La première fois, vous pouvez cliquer sur "Cliquez ici pour afficher un message Javascript" et vous obtiendrez un message d'alerte Javascript qui dit "bouton cliqué". Cependant, une fois que vous avez cliqué sur "Cliquer ici pour charger la vue partielle", cliquer sur le bouton censé apporter le message d'alerte Javascript n'a aucun effet. Il semble que l'événement 'click' ne soit plus déclenché.
Est-ce que quelqu'un sait pourquoi ce problème se produit avec JQuery et comment résoudre ce problème? Ce problème se produit également avec d'autres plug-ins JQuery qui utilisent des événements.
Génial. Cela fonctionne en effet. Selon la documentation officielle live() peut être utilisé pour attacher un gestionnaire à l'événement pour tous les éléments qui correspondent au sélecteur actuel, maintenant ou dans le futur. Le seul inconvénient est que les autres personnes qui ont écrit les plug-ins n'ont apparemment pas utilisé la méthode live. Par conséquent, pour le faire fonctionner avec des plug-ins existants, quelqu'un aurait probablement besoin de creuser dans le code source et de le modifier. – dritan
True. Cela ou après que le contenu est ajouté à la page, vous pouvez appeler à nouveau le plugin au lieu de simplement charger la page. Si la réponse est suffisante, veuillez la marquer comme acceptée ... – mkedobbs
Cette réponse est périmée, voir la réponse de PEOudin. – Martin