我这样做:
$(function () {
$("#but").click(function () {
$('#bigHtml').load('@Url.Action("SecondPage")');
});
});
<div id="bigHtml">
<div id="but"></div>
</div>
但它不起作用。我做违法的事吗? (@ Url.Action正常工作)
答案 0 :(得分:3)
在这种情况下,请使用 .live()
(强调我的):
为所有与当前选择器匹配的元素添加处理程序,现在和将来。
$("#but").live('click', function () {
$('#bigHtml').load('@Url.Action("SecondPage")');
});
在您的代码中,您将事件处理程序附加到当前页面中的一个#but
实例。重新加载内容时,将删除此实例,以及事件侦听器。新内容中的#but
元素是不同的实例。
您没有重新绑定事件处理程序。调用JavaScript代码时,jQuery会查找元素#but
并完成。注入新内容后,它不再显示该元素。 live()
通过不将事件处理程序附加到元素而是附加文档根来克服此问题。