1

在使用 jQuery 的 .load 函数时,我试图阻止滚动到顶部。我在 SO 上读过,你可以使用event.preventDefault(); event.stopPropagation();. 是这个问题的链接。但是当使用 beginform 时,这里没有事件。

我也尝试在提交按钮上放置一个点击事件,但这也没有用。

提前致谢!

这是视图的代码。当成功时,函数 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>

动作reservationList 返回一个带有表的视图。只有表的主体有一个overflow: auto;.

编辑:添加了更多信息

我有一个包含我的预订表列表的 div。我正在使用 MVC3 来显示该列表。当按下取消按钮时,div 将通过 .load 函数重新加载。

编辑

这是我的带有表格的 HTML 视图: Pastebin

4

1 回答 1

1

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

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

如果你愿意,你也可以使用.scrollLeft()数量。

于 2012-07-16T11:23:29.870 回答