使用.load()防止滚动到顶部

时间:2012-07-16 11:14:46

标签: c# jquery

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

您可以在加载前简单地获取滚动量。加载完成后应用相同的滚动量

function closeFancyReservationCancel() {
    $.fancybox.close();
    var scroll_amount= $('#reservationList').scrollTop();
    $('#reservationList').load(ResolveUrl('~/Reservation/reservationList'),
                          function() {
                              $('#reservationList').scrollTop(scroll_amount);
                          });
}

如果您愿意,也可以使用.scrollLeft()金额。