我有个原则,就是除了代码中变量名之外,轻易不会用骆驼命名。所以,很多字符串常量值我一般会全部小写,中划线或下划线链接。而中划线是我的最爱,因为它不会被用于变量名,可以放心地做全局替换。

jQuery 的 data() 是个很有用的方法,对应的有个 removeData() 的方法。

今天发现了它的一个 bug,当 data key 中有中划线的时候,设 data 的时候没问题,取的时候,以及移除的时候都不行。

我做了如下试验:

node.data("x-y", "x-y").data("x.y", "x.y").data("x_y", "x_y").data();

结果 x-y 就给硬生生转成了 xY…调用 .data("x-y") 能正确返回,但 .removeData("x-y") 却不能成功。

jquery 版本是 1.6.1,然后试了 1.4.2,并没有问题。

在 jQuery 上提了 bug ticket