我正在尝试使用jQuery的.load函数阻止滚动到顶部。我在SO上读到你可以使用event.preventDefault(); event.stopPropagation();
。 Here是此问题的链接。但是在使用beginform时,这里没有事件。
我还尝试在提交按钮上放置一个click事件,但这也无效。
提前致谢!
这是视图的代码。成功时调用函数closeFancyReservationCancel。
@using (
Ajax.BeginForm("Cancel",
"Reservation",
new AjaxOptions { HttpMethod = "POST",
OnSuccess = "closeFancyReservationCancel"},
new { id = "cancelForm" }))
{
...
}
)
这是jQuery函数
function closeFancyReservationCancel() {
$.fancybox.close();
$('#reservationList').load(ResolveUrl('~/Reservation/reservationList'));
}
function ResolveUrl(url) {
if (url.indexOf("~/") == 0) {
url = baseUrl + url.substring(2);
}
return url;
}
这是我的HTML的一部分:
<div id="reservationList" class="tblContainer">
@Html.Action("reservationList", "Reservation")
</div>
action reservationList返回包含该表的视图。只有表格的正文有overflow: auto;
。
编辑:添加了更多信息
我有一个包含我的预订表列表的div。我正在使用MVC3来显示该列表。按下取消按钮时,div将通过.load函数重新加载。
修改
这里我的HTML视图与表格: Pastebin
答案 0 :(得分:1)
您可以在加载前简单地获取滚动量。加载完成后应用相同的滚动量
function closeFancyReservationCancel() {
$.fancybox.close();
var scroll_amount= $('#reservationList').scrollTop();
$('#reservationList').load(ResolveUrl('~/Reservation/reservationList'),
function() {
$('#reservationList').scrollTop(scroll_amount);
});
}
如果您愿意,也可以使用.scrollLeft()
金额。