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

War*_*ock 1 javascript jquery events memory-leaks

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

Den*_*ret 7

不,这不是必需的.

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

文档:

此外,在使用新内容替换这些元素之前,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;
},
Run Code Online (Sandbox Code Playgroud)