Ich versuche, JQuery-Ereignisse mit Teilansichten in ASP.NET MVC zu arbeiten. Nachdem Sie jedoch eine Teilansicht über Ajax geladen haben, kann JQuery keine Ereignisse für eines der Elemente in der Teilansicht auslösen. Ich vermute, dass dieses Problem auch auftritt, wenn Sie andere Frameworks oder JavaScript-Bibliotheken verwenden, um partiellen HTML-Code mit Ajax zu laden.JQuery-Ereignisse funktionieren nicht mit ASP.NET MVC Teilansichten
Betrachten wir zum Beispiel das folgende Beispiel:
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>
Sobald die Seite geladen wird für th Wenn Sie das erste Mal auf "Klicken Sie hier, um eine Javascript-Nachricht anzuzeigen" klicken, erhalten Sie eine JavaScript-Warnmeldung mit der Meldung "Schaltfläche angeklickt". Sobald Sie jedoch auf "Klicken Sie hier, um Teilansicht zu laden" klicken, hat das Klicken auf die Schaltfläche, die die JavaScript-Warnmeldung bringen soll, keine Auswirkung. Es scheint, dass das Ereignis "click" nicht mehr ausgelöst wird.
Weiß jemand, warum dieses Problem mit JQuery auftritt und wie zu beheben? Dieses Problem tritt auch bei anderen JQuery-Plugins auf, die Ereignisse verwenden.
Ehrfürchtig. Das funktioniert tatsächlich. Gemäß der offiziellen Dokumentation kann live() verwendet werden, um einen Handler an das Ereignis für alle Elemente anzuhängen, die dem aktuellen Selektor jetzt oder in der Zukunft entsprechen. Der einzige Nachteil ist, dass die anderen Leute, die die Plug-Ins geschrieben haben, nicht offensichtlich die Live-Methode verwendet haben. Um also mit vorhandenen Plug-Ins arbeiten zu können, müsste jemand wahrscheinlich den Quellcode eingraben und optimieren. – dritan
Wahr. Nachdem der Inhalt der Seite hinzugefügt wurde, können Sie das Plug-In erneut aufrufen, anstatt nur auf der Seite zu laden. Wenn die Antwort ausreichend ist, markieren Sie sie als akzeptiert ... – mkedobbs
Diese Antwort ist veraltet, siehe Antwort von PEOudin. – Martin