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.
这些解决方案都不适合我,所以我必须做这些工作:
- 我创建了一个局部视图,并将所有JavaScript引用放在该文件中
- 我创建了一个像这样的div
@Html.Partial("[Your_Path]")
3.当我加载一些部分页面后,我在JavaScript中执行此操作:
$('#js').load('/Your_Controller/Your_Partial_function');