2010-02-24 36 views
1

我写了一个jQuery插件,它可以很好地适用于1.4.1以下的所有版本。现在,jQuery已更新至1.4.2完全停止工作。我有一堆单元测试,并且在最后一个版本中只有300+通过了32。更新jQuery到1.4.2后的插件损坏

我检查了1.4.2更新日志,但它说的是有一些性能改进,就是这样。

这里的更新日志:

Performance Improvements: 
· The performance of calling .bind() and .unbind(). 
· The performance of .empty(), .remove(), and .html(). 
· The performance of inserting a single DOM node into a document. 
· The performace of calling $("body"). 

Bug Fixes: 
· Remove existing foo[] when traditional = false in param. 
· Problem with getJSON callback does not firing. 
· Removed the Need for setArray. 

我不使用任何的bug修复部分中提到的部分。此版本中是否有其他更改可能会破坏我的代码?我真的不知道从哪里开始调试。

我的插件代码是可用的here和失败的单元测试可以发现here。再次将jQuery更改为1.4.1将使所有单元测试通过。

+0

试图使用该插件时是否收到任何错误消息?什么样的测试失败? – 2010-02-24 10:23:35

+0

我没有收到任何错误/警告。我已经测试了单元测试和插件本身对JSLint,以便发现没有缺少分号或其他问题。在大多数浏览器中几乎所有的测试都失败这在IE中稍微好一点,但插件仍然不可用。我注意到大多数删除插件功能的测试仍然可以,但可能是因为这些功能未正确启用。 – RaYell 2010-02-24 10:30:44

回答

1

我会建议检查您拨打$.data()来检索值的位置 - 现在它会返回nullundefined,正如我在mu插件停止工作时所测试的那样。

+0

不,我不这样认为。它之前正在返回'undefined',现在就这样做了。 – RaYell 2010-02-25 10:38:42

+0

关于第二个想法,这不完全是问题,但它很接近。我使用的是'$ .data()'而不是'$(selector).data()',如果该值不存在,则第二个方法返回'null'。 – RaYell 2010-02-25 10:56:33