1

我正在使用一个名为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

单击销毁按钮(并发生垃圾收集)后,

DOM 节点计数880变为645

事件侦听器计数132变为32

理论上不应该值恢复到原始状态吗?我在这里错过了什么吗?我已经阅读了大量关于这个主题的帖子,而且我似乎遵循标准做法,所以我很想这是 jqWidget 库的问题,而不是我的代码,任何帮助或建议都值得赞赏。

我尝试了 empty() 和 remove() ,结果相同。

4

0 回答 0