"未捕获的TypeError:无法使用'in'运算符来搜索"由Datatables插件和jQuery 1.11.3触发的'length'

Jam*_*mes 20 javascript jquery datatables twitter-bootstrap

我正在使用jQuery Datatables插件来启用分页,排序和搜索我的表.元素出现但不起作用,有时只会出现分页.在Chrome控制台中,我收到错误消息:

Uncaught TypeError: Cannot use 'in' operator to search for 'length' in 
Run Code Online (Sandbox Code Playgroud)

这是演示页面.

我在这个插件旁边使用Bootstrap.

Dhi*_*raj 33

该错误是因为isArraylikejQuery版本1.11.3 中的方法.(只要).该方法看起来像这样

function isArraylike( obj ) {

    // Support: iOS 8.2 (not reproducible in simulator)
    // `in` check used to prevent JIT error (gh-2145)
    // hasOwn isn't used here due to false negatives
    // regarding Nodelist length in IE
    var length = "length" in obj && obj.length, // <------ THIS IS THE CULPRIT
        type = jQuery.type( obj );

    .......
}
Run Code Online (Sandbox Code Playgroud)

那个版本的jQuery在对象中使用"length"来获取长度.(我对此一无所知).

但我知道没有其他版本的jquery有这个问题.

版本1.11.3和2.1.4(正如詹姆斯在评论中指出的那样)存在这个问题.

所以解决方案是只升级到下一个版本或者至少使用除1.11.3或2.1.4之外的任何其他版本

  • 哈哈很奇怪,谢谢你我现在选择了2.1.3 :) (3认同)
  • 如果在轨道上这有帮助:https://github.com/rails/jquery-rails/blob/master/VERSIONS.md - 也很有趣我如何跳过某些单词,如'除了',然后去抓取最新版本2.1. 4 ...所以未来的读者,请尝试2.1.3,这是jquery-rails 4.0.4,并在你的application.js中指定`/ = require jquery2` (2认同)

Ale*_*lex 8

我正在使用gem jquery-datatables-rails处理Ruby on Rails.

我直接从GitHub上次提交更新gem:

gem 'jquery-datatables-rails', github: "rweng/jquery-datatables-rails", branch: "master"
Run Code Online (Sandbox Code Playgroud)

这项工作对我来说,我想他们将很快发布这个提交的新版本的gem.


Ben*_*ier 5

升级到DataTables到DataTables 1.10.7或者 1.10.8-dev对我不起作用(使用jQuery 1.11.3).

降级到jQuery 1.11.2确实有效(使用DataTables 10.0.0)

  • 可以确认.我使用的是jQuery 2.1.4和Datatables 10.0.4.升级到DataTables 1.10.7解决了这个问题. (3认同)