繁体   English   中英

jQuery:内部缓存问题

[英]jQuery: Issue with internal caching

我正在对旧版系统(jQuery版本:1.6.2)的UI进行改进。

我有一个HTML表,可以用2种不同的状态表示:展开和折叠状态。 这是通过在特定元素上添加特定的CSS类(FFA-hc)来实现的。 当用户扩展表格时,使用jQuery的show()方法可以看到带有'FFA-hc'类的所有元素: $(".FFA-hc").show(); 反之亦然,收合工作原理: $(".FFA-hc").hide();

用户可以向该表添加行或从中删除行。
添加: $('tbody > tr:eq(' + (FFAs.rows.length - 2) + ')', FFAs).before(String.format(template, index));
删除: $('tbody > tr:eq(' + index + ')', FFAs).remove();

在执行以下步骤后,问题开始了:

  1. 用户已扩展表格
  2. 一行已被删除
  3. 用户正在尝试折叠桌子

结果是jQuery代码中的Javascript错误:无法获取未定义或空引用的属性'jQuery16207024853786526762'。

到目前为止,我发现了什么:
在步骤1中,对于所有具有'FFA-hc'类的元素,新属性'jQuery16207024853786526762'已添加了整数值(序列号)。 在第2步中,从DOM中删除了某些此类元素。 在第3步中,jQuery试图获取一个元素,该元素在DOM中不再存在,并因错误而失败。

这是jQuery中的错误吗? 请告知我如何摆脱此错误。

就我而言,jQuery PS升级不是最佳选择。

编辑:
错误发生在完整jQuery 1.6.2源代码的第1455行的jQuery.extend对象的'data'方法中:
if((!id ||(pvt && id &&!cache [id] [internalKey]))&& getByName && data === undefined){return; }
if子句的问题部分是!cache[id][internalKey] - cache[id]未定义

我将jQuery的v1.6.2源代码与最新的v1.11.1版本进行了比较,它缺少if子句的另一项检查: !cache[id]
由于不允许升级jQuery,因此我仅更新了if语句
从:
if ((!id || (pvt && id && !cache[id][internalKey])) && getByName && data === undefined) { return; }
至:
if ((!id || !cache[id] || (pvt && id && !cache[id][internalKey])) && getByName && data === undefined) { return; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM