我有一个包含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调用?
答案 0 :(得分:0)
您可以使用jquery on()方法而不是附加onclick和onchaneg函数
示例:
<div id="partial-view-container">
@{Html.renderPartial("ViewName");}
</div>
在PartialView中
<input type="text" id="time">
主视图中的Jquery
$('#partial-view-container').on('change','#time',function(){
//do what you want here
// ajax call
});
顺便说一下,你应该用ajax调用替换整个表,如果你替换整个部分视图,它不应该导致memroy泄漏
您还可以尝试分页以减少渲染的数据并加快加载时间