Mas*_*ity 4 jquery internet-explorer
它不在FF/Chrome中,我认为它不应该在IE中.毕竟$()不返回普通对象,而是返回$的实例.我错了吗?
简答: 不,你不是疯了,它确实是jQuery核心中的一个bug.
答案很长:
我设置了一个快速测试,看看有什么区别:http://jsfiddle.net/nick_craver/9J3VP/
属性列表在IE中的顺序不同(至少8个),所以这部分(来自jQuery核心):
var key;
for ( key in obj ) { }
Run Code Online (Sandbox Code Playgroud)
它抓住列表中的最后一个属性并对其进行hasOwnProperty检查,所以它在IE中沸腾到这个:
Object.prototype.hasOwnProperty.call($(document.body), 'length') //true
Run Code Online (Sandbox Code Playgroud)
这在其他浏览器中(经过测试的FF/Chrome):
Object.prototype.hasOwnProperty.call($(document.body), 'width') //false
Run Code Online (Sandbox Code Playgroud)
由于该属性列表进行排序不同,它抓住了length在IE属性,以及一些其他在其他浏览器,我们得到一个不同的结果(踢,单击以包括左边的jQuery UI,看着它更改为其他自定义属性,tabs). 循环上方的这条评论for:
// Own properties are enumerated firstly, so to speed up,
// if last one is own, then all properties are own.
Run Code Online (Sandbox Code Playgroud)
关于IE的属性排序是一个错误的假设,所以我认为这是jQuery 1.4.2的一个错误.
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |