Jquery 重新创建按钮集。我应该在之前销毁吗?
我在应用程序中广泛使用jQueryUI(1.8.16) 我开发了一个简单的函数,它通过ajax调用获取一些json数据,并使用jQuery UI按钮集转换寻呼机中的DIV:Jquery 重新创建按钮集。我应该在之前销毁吗?,jquery,jquery-ui,Jquery,Jquery Ui,我在应用程序中广泛使用jQueryUI(1.8.16) 我开发了一个简单的函数,它通过ajax调用获取一些json数据,并使用jQuery UI按钮集转换寻呼机中的DIV: <div id="answersPager"></div> 一切正常,但我想知道我是否必须在重建按钮集之前销毁它(目前我只是清空它) 是否有任何我必须注意的内存问题 不太可能.empty通过jQuery的内部.cleanData方法删除附加到任何已删除标记的所有数据和处理程序,从而防止任何内存泄漏,
<div id="answersPager"></div>
一切正常,但我想知道我是否必须在重建按钮集之前销毁它(目前我只是清空它)
是否有任何我必须注意的内存问题 不太可能
.empty
通过jQuery的内部.cleanData
方法删除附加到任何已删除标记的所有数据和处理程序,从而防止任何内存泄漏,因此您非常安全。从:
为了避免内存泄漏,jQuery删除了其他结构,如数据
和子元素中的事件处理程序,然后删除
元素本身
仅供参考-
.html
也会调用.cleanData
,因此使用.html(“”)
是等效的。实际上不是.empty
通过jQuery的内部.cleanData
方法删除附加到任何已删除标记的所有数据和处理程序,从而防止任何内存泄漏,因此您非常安全。从:
为了避免内存泄漏,jQuery删除了其他结构,如数据
和子元素中的事件处理程序,然后删除
元素本身
仅供参考-.html
也会调用.cleanData
,因此使用.html(“”)
是等效的。buttonset()即使从未连接到父节点,也不会将自身标记为已准备好进行垃圾收集
尝试:
- 拍摄堆快照李>
- 实例化n个按钮集,但不附加到 任何家长,也不添加任何侦听器李>
- 拍摄堆快照李>
- 比较这两个快照,注意HTMLButtons的增量增加了
- 拍摄堆快照李>
- 实例化n个按钮集,但不附加到 任何家长,也不添加任何侦听器李>
- 拍摄堆快照李>
- 比较这两个快照,注意HTMLButtons的增量增加了
我发现需要调用buttonset(“销毁”)来纠正这种情况。谢谢您的回复。非常有帮助。谢谢你的回复。非常有用。
BuildAnswersPager: function(selectedPage, totalPages) {
$("#answersPager").empty();
if (totalPages > 1) {
var ctl = [];
var isChecked = "";
for (var i = 1; i <= totalPages; i++) {
if (i === selectedPage) {
isChecked = " checked='checked'";
}
else {
isChecked = "";
}
ctl[i] = "<input class='answersRadioPager' type='radio' value='" + i + "' id='a_page_" + i + "' name='answer_pager' " + isChecked + "/><label for='a_page_" + i + "'>" + i + "</label>";
}
$("#answersPager").append(ctl.join(''));
$("#answersPager").buttonset();
}
}
$(".answersRadioPager").live('click', function() {
// Fetches json data (new page)
});