【问题标题】:Memory leak using jquery-ui/datepicker使用 jquery-ui/datepicker 的内存泄漏
【发布时间】:2011-09-02 20:51:01
【问题描述】:

我正在使用这些脚本(其中 jquery-ui[].custom.js 是 datepicker 插件):

<script src="../../Scripts/jquery-1.5.1.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.13.custom.js" type="text/javascript"></script>
<script id="formvalidation" type="text/javascript">
$(document).ready(function () {
    $(".datepicker").datepicker({ dateFormat: 'dd/mm/yy' });
});
</script>

在这个输入元素上(在表单内):

<input type="text" name="Date" class="datepicker" />

页面加载正常,当我单击输入字段时,日期选择器会正确弹出,但是一旦选择了日期并且日期选择器消失,我就会出现内存泄漏(在每个浏览器中)。由于 jquery-1.5.1.js 中的内存泄漏,这会导致那部分 JS 崩溃或减慢浏览器速度:

行:1520 错误:内存不足

调试时我看到错误行在 2310

jQuery.event.remove( elem, type + types );

一点上下文:

// Unbind all events for the element
if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
    types = types || "";
    for ( type in events ) {
        jQuery.event.remove( elem, type + types );
    }
    return;
}

是我做错了什么还是 jquery 中的错误?我也在使用验证插件,但是当我禁用它时会出现同样的错误。

[解决了吗?] 由于我无法在 8 小时内发布我的答案:

通过切换到 jquery 的最小版本(jquery-1.5.1.min.js 和 jquery-ui-1.8.13.custom.min.js)解决了泄漏。看来最小版本和开发版本之间存在一些差异。

附带问题:如果它还不是问题,哪里是提出这个问题的好地方?

【问题讨论】:

  • 如果你使用 jQuery 1.6,它会消失吗?
  • 不,尝试了 1.4.1、1.5.1 和 1.6.1。

标签: jquery jquery-ui datepicker jquery-ui-datepicker


【解决方案1】:

通过切换到 jquery 的最小版本(jquery-1.5.1.min.js 和 jquery-ui-1.8.13.custom.min.js)解决了泄漏。看来最小版本和开发版本之间存在一些差异。

附带问题:如果它还不是问题,哪里是提出这个问题的好地方?

【讨论】:

    【解决方案2】:

    也许你想要

    $(document).ready(function () {
        $(".datepicker").datepicker({ dateFormat: 'dd/mm/yy' });
    });
    

    您上面的构造会将您的函数作为选择器传递给 jQuery,这可能会产生意想不到的后果。

    【讨论】:

    • 很好,但我试过了,没有任何改变。我会将其添加到我的问题中。
    • 您是按照我发布的内容进行更改,还是按照您现在的问题进行更改?它仍然在document.ready 中显示$(function() {... }),这是错误的。那就是问题不在于没有使用document.ready,问题在于将函数传递给jquery。
    • 糟糕,我做错了。我把它换成了你所拥有的,但我仍然得到同样的错误:S.
    • 这很奇怪。能不能制作一个简化版的jsfiddle,这样也可以很方便的尝试不同版本的jquery?
    • 不过似乎没有内存泄漏,至少我可以说。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2013-10-04
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多