假设您将变量作为属性附加到 DOM 元素(您应该注意不要创建循环引用并触发 IE 内存泄漏;请参阅:crockford 文章)。
在有关泄漏的文章中,Crockford 先生提供了一个从所有 DOM 元素中清除函数引用的函数,这与您需要的类似:
function purge(d) {
var a = d.attributes, i, l, n;
if (a) {
l = a.length;
for (i = 0; i < l; i += 1) {
n = a[i].name;
if (typeof d[n] === 'function') {
d[n] = null;
}
}
}
a = d.childNodes;
if (a) {
l = a.length;
for (i = 0; i < l; i += 1) {
purge(d.childNodes[i]);
}
}
}
他在哪里
if (typeof d[n] === 'function') {
替换为检查您的自定义属性/属性的逻辑(如果您使用许多不同的列表,请在数组中方便地保留一个列表,并确保您的所有属性名称都不会与标准属性(如 src、title 等)冲突)