JQuery事件不适用于ASP.NET MVC部分视图

我试图让JQuery事件与ASP.NET MVC中的部分视图一起使用。 但是,在通过Ajax加载部分视图后,JQuery似乎无法为局部视图中的任何元素触发事件。 我怀疑如果您使用其他框架或JavaScript库来使用Ajax加载部分HTML代码,也会发生此问题。

例如,请考虑以下示例:

控制器:

public class TestController : Controller { public ActionResult Index() { return View(); } public ActionResult LoadPartialView() { return View("PartialView"); } } 

的Index.aspx

   $(document).ready(function() { $("#button").click(function() { alert('button clicked'); }); });  
Click to load partial view.


PartialView.ascx

 
Click to display a javascript message.

页面首次加载后,您可以单击“单击此处显示Javascript消息”,您将收到一条Javascript警告消息,显示“单击按钮”。 但是,一旦单击“单击此处加载部分视图”,单击应该带来Javascript警报消息的按钮就没有任何效果。 似乎’click’事件不再被触发了。

有谁知道为什么JQuery会出现这个问题以及如何解决? 使用事件的其他JQuery插件也会出现此问题。

我找到了一个解决方案:

Juste尝试制作:

 $(document).on("click", "YOUR_SELECTOR", function(e){ /// Do some stuff ... }); 

代替 :

 $("YOUR_SELECTOR").on("click", function(e){ /// Do some stuff ... }); 

处理此问题的最简单方法是使用live()方法:

  
  

对我来说也有用的是将jquery的东西放在局部视图中。 只需确保只引用加载视图中的控件,否则可能会获得一个为控件注册两次的处理程序。

PartialView.ascx:

 
Click to display a javascript message.

这些解决方案都不适合我,所以我必须做这些工作:

  1. 我创建了一个局部视图,并将所有JavaScript引用放在该文件中
  2. 我创建了一个像这样的div
 
@Html.Partial("[Your_Path]")

3.当我加载一些部分页面后,我在JavaScript中执行此操作:

 $('#js').load('/Your_Controller/Your_Partial_function');