События jQuery не работают с ASP.NET MVC Частичные Представления

Я пытаюсь заставить события 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, в котором говорится, что "кнопка нажала". However, once you click on the, "Щелкают здесь для загрузки частичного представления", нажимая на кнопку, которая, как предполагается, приносит сообщение предупреждения JavaScript, не имеет никакого эффекта. Кажется, что событие 'щелчка' не запускается больше.

Кто-либо знает, почему эта проблема происходит с JQuery и как зафиксировать? Эта проблема также происходит с другими плагинами JQuery то использование события.

24
задан Jonn 10 August 2011 в 05:19
поделиться

1 ответ

Самый простой способ справиться с этим - использовать метод live ():

<script type="text/javascript"> 
         $(document).ready(function() { 
             $("#button").live('click', function() { 
                 alert('button clicked'); 
             }); 
         });    
</script>  
10
ответ дан 28 November 2019 в 22:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: