DOM节点数增加 - .off()。empty()

时间:2013-09-23 21:12:57

标签: javascript jquery dom widget event-listener

我正在使用名为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库的问题,而不是我的代码,任何帮助或建议表示赞赏。

我尝试使用相同的结果清空()和删除()。

0 个答案:

没有答案