【发布时间】: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