我正在使用名为jqWidgets的外部JS Widget库,主要用于其功能丰富的GRIDS。我正在构建一个单页应用程序,在整个应用程序的使用过程中添加和删除很多网格。我遇到了DOM节点数增加的问题,我已经成功地减少了事件监听器计数,尽管这种情况正在慢慢增加。例如:
使用Javascript:
$(document).ready(function () {
$("#runTest").on('click', function(){
$("#testGrid").jqxGrid({
width: 795,
selectionmode: 'singlecell',
editable: true,
sortable: true,
filterable: true,
rowsheight: 20,
height: 200,
columns: [
{text: 'Activity ID', datafield: 'activity_id', width: 150},
{text: 'Description', datafield: 'activity_description', width: 150},
{ text: 'Notes ⁄ Comments', datafield: 'activity_notes'}
]
});
});
$("#destroyGrid").on('click', function(){
$("#runTest").off('click');
$("#testGrid").jqxGrid('destroy');
$("#testDiv").remove();
});
});
HTML:
<div id='testDiv'>
<div id='testGrid'></div>
</div>
<input type="button" value="click me" id="runTest" />
<input type="button" value="destroy" id="destroyGrid" />
点击 runTest 按钮创建网格时,我的 DOM节点数从 318 变为 880
和事件监听器计数从 8 到 132 。
单击 destroy 按钮(并发生垃圾收集)后, DOM节点计数从 880 到 645
和事件监听器计数从 132 到 32 。
理论上不应该将值恢复到原始状态吗?我在这里错过了什么吗?我已经阅读了关于这个主题的大量帖子,我似乎遵循标准做法,所以我很想认为这是jqWidget库的问题,而不是我的代码,任何帮助或建议表示赞赏。
我尝试使用相同的结果清空()和删除()。