如何在DataTables中禁用键绑定

时间:2016-09-06 08:40:56

标签: javascript jquery datatables

我想使用DataTables(一个jQuery插件)来显示数据。 安装和设置完成后,通过DataTables搜索我的数据到目前为止工作正常。 我正在使用DataTables v1.10.12,我的jQuery坚持1.9.1。

我想禁用事件的绑定,或者根本没有事件 - 我该怎么做?

背景

我正在为第三方应用程序开发插件。这个应用程序封装了jQuery,我无法改变它。

使用DataTables时,我遇到了错误

TypeError: Cannot read property 'length' of undefined

现在,我正在通过

来解决这个问题
jQuery("#my-table").DataTable({"ordering": false, "paging":false});

我不知道这个错误来自哪里,但我有堆栈跟踪,我看到,如果我不绑定某些事件,这个问题就不会发生。当然,这不是一个好的解决方案,但暂时是唯一的,我可以使用。

Uncaught TypeError: Cannot read property 'length' of undefined
jQuery.extend.map   @   batch.js?analytics-enabled=true&bamboo-nps-dark-feature=true&devtoolbar=true&is-server-instance=tru…:876
(anonymous function)    @   batch.js?analytics-enabled=true&bamboo-nps-dark-feature=true&devtoolbar=true&is-server-instance=tru…:30520
keyHandler  @   batch.js?analytics-enabled=true&bamboo-nps-dark-feature=true&devtoolbar=true&is-server-instance=tru…:30523
jQuery.event.add    @   batch.js?analytics-enabled=true&bamboo-nps-dark-feature=true&devtoolbar=true&is-server-instance=tru…:4926
jQuery.event.add    @   batch.js?analytics-enabled=true&bamboo-nps-dark-feature=true&devtoolbar=true&is-server-instance=tru…:10312
...
jQuery.fn.extend.bind   @   batch.js?analytics-enabled=true&bamboo-nps-dark-feature=true&devtoolbar=true&is-server-instance=tru…:7673
_fnBindAction   @   jquery.dataTables.js:6533
_fnSortAttachListener   @   jquery.dataTables.js:6154
_fnBuildHead    @   jquery.dataTables.js:3210
_fnInitialise   @   jquery.dataTables.js:4682
(anonymous function)    @   jquery.dataTables.js:1339

使用:

jquery.dataTables.js:6526   function _fnBindAction( n, oData, fn )
jquery.dataTables.js:6527   {
jquery.dataTables.js:6528       $(n)
jquery.dataTables.js:6529           .bind( 'click.DT', oData, function (e) {
jquery.dataTables.js:6530                   n.blur(); // Remove focus outline for mouse users
jquery.dataTables.js:6531                   fn(e);
jquery.dataTables.js:6532               } )
jquery.dataTables.js:6533           .bind( 'keypress.DT', oData, function (e){

1 个答案:

答案 0 :(得分:1)

今天和jira有同样的问题。 它实际上是Atlassian AUI中的一个错误,因为它们覆盖了jquery-hotkey中的一些代码,请参阅https://ecosystem.atlassian.net/browse/AUI-1283https://bitbucket.org/atlassian/aui/diff/src/js/jquery/jquery.hotkeys.js?diff2=3a600c290f9c
DataTables尝试注册它自己的热键并失败。

要修复它,你可以

  • 将您的竹子更新为新版本
  • 从DataTables中删除键绑定,这意味着删除' .bind(' keypress.DT' ...'在jquery.dataTables.js#_fnBindAction