是否需要在调用html()之前执行unbind()或off()

时间:2013-11-22 10:37:06

标签: javascript jquery events memory-leaks

在调用jQuery unbind()之前,是否需要为html元素执行off() jQueryhtml()函数以避免内存泄漏?

1 个答案:

答案 0 :(得分:7)

不,这不是必需的。

html功能负责在设置innerHTML之前清理所有内容。

来自the documentation

  

此外,jQuery删除了其他构造,如数据和事件   在用这些元素替换之前,来自子元素的处理程序   新内容。


实施细节:

html函数调用代码在此处的empty

empty: function() {
    var elem,
        i = 0;

    for ( ; (elem = this[i]) != null; i++ ) {
        // Remove element nodes and prevent memory leaks
        if ( elem.nodeType === 1 ) {
            jQuery.cleanData( getAll( elem, false ) );
        }

        // Remove any remaining nodes
        while ( elem.firstChild ) {
            elem.removeChild( elem.firstChild );
        }

        // If this is a select, ensure that it displays empty (#12336)
        // Support: IE<9
        if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
            elem.options.length = 0;
        }
    }

    return this;
},