发现并认为这是jQuery1.4.4的一个Bug

说起来还觉得丢人,公司的系统开发了两年,目前jquery的版本还是用的1.4.4。

mantis上的Bug一堆,今天在改bug的时候发现一个jQuery的Bug。

 

改bug嘛,一开始总是各种调试,总感觉怪怪的。经过各种分析和猜想后,最后问题归结到jquery.data函数。于是做了个实验。
先写了一个简单的页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html>

<head>

    <script type="text/javascript" src="jquery-1.4.4.min.js"></script>

    <script type="text/javascript">

    $(function(){

        $("#box").text("hello jquery");

    });

    </script>

</head>

<body>

    <div id="box"></div>

</body>

</html>

 

接着我在控制台执行:

结果却返回了一个function。
但执行:

返回undefined。

然后又是各种猜想和测试,发现执行jquery的内部函数名称的参数时,这些内部函数名都会返回函数体。

$.data($("abc"),"css")
$.data($("abc"),"data")
$.data($("abc"),"text")

 

我觉得这是个jQuery1.4.4的bug。所以我又试了下最新版本的jQuery1.10.2 。
在最新版本下,返回的就都是undefined了。即我所认为的正常返回结果。

接着我建议升级jQuery的版本,但经理说,升级会有风险,因为有些接口在高版本里用法改掉了。
没办法,确实有这问题。但早干嘛了。目前只能先尽量避免使用这些特殊的名称了。1.4.4应该还存有很多Bug。这次只需要改掉几个命名就行了。但下次还不知道有怎样的奇葩问题。

 

posted @ 2013-11-25 14:51  LaplaceDemon  阅读(884)  评论(0编辑  收藏  举报