当前位置:  开发笔记 > 编程语言 > 正文

这是正确的吗?擦除数据存储的jQuery错误?

如何解决《这是正确的吗?擦除数据存储的jQuery错误?》经验,为你挑选了0个好方法。

启动你的firebug控制台并试一试.

比较一下:

$('body').data('x',1);
$(thisx).remove();
console.log($('body').data('x'));

对此:

$('body').data('x',1);
$(this.x).remove();
console.log($('body').data('x'));

请注意区别?如果thisx未定义,它将立即抛出引用错误.如果x是未定义的属性this,jQuery将返回文档,因为它的结果集.接下来jQuery将尝试删除您的文档(它不能),但在此之前它将删除附加到文档的任何子元素的所有数据.因此,擦除您的数据存储.

注意:this可以是任何元素引用或对象.您只需要让jQuery尝试访问未定义的属性.

(谈论一个痛苦.它无声地失败,我正在试图找出为什么我的数据突然丢失.我追踪到一个特殊情况,在特定情况下元素引用未定义.)

关于我的问题:

1)在我提交错误报告之前,我是否正确分析了这个问题?如果有人碰巧知道这是一个已知问题,请告诉我.我在bug跟踪器中找不到它,但界面不是很好(或者我错了).

2)为什么最终会有任何差异?我猜thisx是立即评估导致异常,this.x而是在被调用函数中传递和计算的引用,对吧?(我认为这条线selector = selector || document;是罪魁祸首.

3)如何处理这个问题的建议?我想我应该检查对象的任何/每个元素引用或属性(例如存储的选择器字符串)是否在我删除之前将其传递给jQuery之前定义.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有