【问题标题】:Uncaught TypeError with jquery tablesorter (Rails, Turbolinks)使用 jquery 表排序器(Rails,Turbolinks)未捕获的 TypeError
【发布时间】:2015-07-07 01:10:08
【问题描述】:

我正在开发的 Rails 应用程序出现一些奇怪的行为。我正在尝试使用 jquery-tablesorter gem 并取得好坏参半。基本上,我创建的页面在页面加载后一直在控制台中给我以下错误:

Uncaught TypeError: $(...).tablesorter is not a function
(anonymous function) @ VM604:4
m.Callbacks.j @ jquery.min.js:2
m.Callbacks.k.add @ jquery.min.js:2
m.fn.ready @ jquery.min.js:2
(anonymous function) @ VM604:2
executeScriptTags @ turbolinks.js?body=1:227
changePage @ turbolinks.js?body=1:197
xhr.onload @ turbolinks.js?body=1:107

奇怪的是,如果我在页面打开后刷新页面并显示错误,那么一切正常,控制台中没有错误。我猜想jquery 库在jquery-tablesorter 之前没有加载。此外,我怀疑这与turbolinks 有关,因为我之前在使用twitter-boostrap-rails gem 时遇到过类似的错误,但能够通过重新排序我的application.js 文件来修复它。但我做的任何事情似乎都无法解决这个错误。这是我的application.js 文件的当前状态:

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs  
//= require twitter/bootstrap
//= require bootstrap-switch
//= require jquery-tablesorter
//= require_tree .
//= require turbolinks

感谢任何修复错误的建议。

【问题讨论】:

  • 您在哪个事件上将 tablesorter 绑定到元素?你能提供这个代码吗?我做了一个使用 turbolinks 的例子——也许这有帮助:github.com/themilkman/tablesorter-demo
  • 我正在将其绑定到准备好的文档上,如下所示:<script type="text/javascript"> $(document).ready(function() { $("#my_table").tablesorter(); } ); </script>

标签: jquery ruby-on-rails-4 twitter-bootstrap-3 tablesorter turbolinks


【解决方案1】:

嗯...原来我在尝试使用 Google OAuth 登录时在我的一个页面底部有一个流氓 <script> 标签。那个<script> 标记正在调用旧版本的jquery,它与应该从我的application.js 文件加载的版本冲突。

无论如何,取出流氓script 标签,它修复了一切。仅供参考,这是 application.js 文件的最终版本

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .
//= require bootstrap-switch
//= require jquery-tablesorter
//= require turbolinks

我认为其他命令也可能有效,但目前这不会给我带来任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多