Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 重新创建按钮集。我应该在之前销毁吗?_Jquery_Jquery Ui - Fatal编程技术网

Jquery 重新创建按钮集。我应该在之前销毁吗?

Jquery 重新创建按钮集。我应该在之前销毁吗?,jquery,jquery-ui,Jquery,Jquery Ui,我在应用程序中广泛使用jQueryUI(1.8.16) 我开发了一个简单的函数,它通过ajax调用获取一些json数据,并使用jQuery UI按钮集转换寻呼机中的DIV: <div id="answersPager"></div> 一切正常,但我想知道我是否必须在重建按钮集之前销毁它(目前我只是清空它) 是否有任何我必须注意的内存问题 不太可能.empty通过jQuery的内部.cleanData方法删除附加到任何已删除标记的所有数据和处理程序,从而防止任何内存泄漏,

我在应用程序中广泛使用jQueryUI(1.8.16)

我开发了一个简单的函数,它通过ajax调用获取一些json数据,并使用jQuery UI按钮集转换寻呼机中的DIV:

<div id="answersPager"></div>
一切正常,但我想知道我是否必须在重建按钮集之前销毁它(目前我只是清空它)


是否有任何我必须注意的内存问题

不太可能
.empty
通过jQuery的内部
.cleanData
方法删除附加到任何已删除标记的所有数据和处理程序,从而防止任何内存泄漏,因此您非常安全。从:

为了避免内存泄漏,jQuery删除了其他结构,如数据 和子元素中的事件处理程序,然后删除 元素本身


仅供参考-
.html
也会调用
.cleanData
,因此使用
.html(“”)
是等效的。

实际上不是
.empty
通过jQuery的内部
.cleanData
方法删除附加到任何已删除标记的所有数据和处理程序,从而防止任何内存泄漏,因此您非常安全。从:

为了避免内存泄漏,jQuery删除了其他结构,如数据 和子元素中的事件处理程序,然后删除 元素本身

仅供参考-
.html
也会调用
.cleanData
,因此使用
.html(“”)
是等效的。

buttonset()即使从未连接到父节点,也不会将自身标记为已准备好进行垃圾收集

尝试:

  • 拍摄堆快照
  • 实例化n个按钮集,但不附加到 任何家长,也不添加任何侦听器
  • 拍摄堆快照
  • 比较这两个快照,注意HTMLButtons的增量增加了
我发现需要调用buttonset('destroy')来纠正这种情况。

buttonset()即使从未连接到父节点,也不会将自身标记为已准备好进行垃圾收集

尝试:

  • 拍摄堆快照
  • 实例化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)
});