0

我有一个包含 HTML 表的 MVC 视图。在该表中,单元格包含附加到复选框的 onclick 事件和绑定到输入框的 onchange 事件。这些与 .js 文件中的标准 JavaScript 函数调用相关联。

<input type="text" id="changeActualTimeBox{'0'}" onchange="ChangeStartTime()">

当这些单元格发生更改时,我通过 POST 方法调用关联的 jQuery ajax 函数并返回包含更新的 html 和新模型数据的 PartialViewResult。新的 html 表(partialView)在 td 标记中每行包含大约 10 个 JavaScript 事件。如果用户调出不同的日期,内存会增加 2mb 或更多,具体取决于返回的表的大小,最多可容纳 200 行数据。

我注意到每次检索新数据时都会堆积许多脚本块函数,这些函数永远不会从内存中释放。不是像我这样附加 onclick 和 onchange 函数,有没有办法使用 jQuery 并完全消除 JavaScript 调用?

4

1 回答 1

0

您可以使用 jquery on() 方法而不是附加 onclick 和 onchaneg 函数

例子:

<div id="partial-view-container">
    @{Html.renderPartial("ViewName");}
</div>

在您的部分视图中

<input type="text" id="time">

主视图中的 Jquery

$('#partial-view-container').on('change','#time',function(){
     //do what you want here
     // ajax call
});

顺便说一句,您应该使用 ajax 调用替换整个表,如果您替换整个部分视图,它不应该导致内存泄漏

您也可以尝试分页以减少您渲染的数据并加快加载时间

于 2014-03-07T01:38:05.147 回答