Я пытаюсь заставить события JQuery работать с частичными представлениями в ASP.NET MVC. Однако после того, как вы загрузите частичное представление через Ajax, JQuery, похоже, не сможет запустить события ни для одного из элементов в частичном представлении. Я подозреваю, что эта проблема также произойдет, если вы используете другие фреймворки или библиотеки JavaScript для загрузки частичного HTML-кода с помощью Ajax.
Например, рассмотрим следующий пример:
Контроллер:
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>
Как только страница загружается в первый раз, вы можете нажать «Нажмите здесь, чтобы отобразить сообщение Javascript», и вы получите предупреждение Javascript с надписью «нажата кнопка». Однако, как только вы нажмете «Нажмите здесь, чтобы загрузить частичное представление», нажатие на кнопку, которая должна принести предупреждение Javascript, не будет иметь никакого эффекта.
Похоже, что событие click больше не запускается.
Кто-нибудь знает, почему эта проблема возникает с JQuery и как ее исправить? Эта проблема также возникает с другими плагинами JQuery, которые используют события.