javascript - $.inArray 在 IE7 中

标签 javascript jquery internet-explorer internet-explorer-7

我正在使用 jQuery,但在 IE7 中遇到了 $.inArray 的问题。

$.inArray([],'test')

在 IE7 中,它返回 0,但在 Chrome 中,它返回 -1,就像它应该的那样。

我已经在 jQuery 1.4.4 和 1.5.2 中对此进行了测试,结果是一样的。

为什么 $.inArray 在不同的浏览器中返回的不一样?

编辑:我只是把论点倒过来了,为什么我没有注意到呢? 但是,为什么 Chrome 给了 -1,而 IE7 给了 0?

最佳答案

你的参数倒过来了。要查找的元素应该首先出现,然后是数组。

这是代码(来自 1.5.0):

  inArray: function( elem, array ) {
     if ( array.indexOf ) {
       return array.indexOf( elem );
     }

     for ( var i = 0, length = array.length; i < length; i++ ) {
       if ( array[ i ] === elem ) {
         return i;
       }
     }

     return -1;
    },

现在一个有趣的问题是,当您传入一个空数组作为目标时,为什么字符串“.indexOf()”在 IE7 中返回 0。有人可能知道,但我尽量不去担心为什么 IE7 的损坏部分会变成现在这样。

edit — 有趣的更新:事实证明,虽然上面的代码肯定存在于 jQuery 源代码中,但后来被重新定义了。上面的定义在 1.4.4 源代码的第 691 行,但稍后,在第 855 行,我们看到:

if ( indexOf ) {
  jQuery.inArray = function( elem, array ) {
    return indexOf.call( array, elem );
  };
}

在那里,裸变量“indexOf”是对“Array.prototype.indexOf”的隐藏引用。当使用“.call()”调用时,第一个参数为字符串,第二个参数为空数组,返回 -1。

关于javascript - $.inArray 在 IE7 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5665382/

相关文章:

javascript - 如何比较对象的颜色属性 |三.js

javascript - 从rails中的ldap信息动态创建用户

jQuery和webkit,如何获取css({top :, left :}) to work?

jquery - 动态创建时 IE7 单选按钮问题

javascript - 在这种情况下如何计算填充?需要它使长度和宽度相同

javascript - 使用文本文件中的数据制作 html 表格

javascript - jQuery隐藏iframe文件上传

javascript - 事件处理程序在 Internet Explorer 中不起作用

javascript - @media 查询在 IE 8 中不支持

javascript - 数字没有加在一起 Node js