jQuery插件不起作用……“类型错误:'undefined'不是一个函数”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery插件不起作用……“类型错误:'undefined'不是一个函数”相关的知识,希望对你有一定的参考价值。

我有一个使用jQuery的Ruby Rails应用程序,正在尝试加载插件,但是它不起作用;脚本以“正确”的顺序加载(即jquery,jquery_ujs,插件,自己的脚本),但是任何插件功能(特别是测试niceScroll和jScrollPane)都会失败,并显示“类型错误:'undefined'不是一个函数”。在Web Inspector中,我可以看到插件脚本在jQuery脚本之后已成功加载,但是我无法使其正常工作。

jQuery itselt可以正常工作,实际上Turbolinks和jQuery turbolinks也可以正常工作。但是,尝试调用“ $('.something').niceScroll”(或任何其他插件)会产生上述类型错误。

这是我的aplication.js:

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require jquery.turbolinks
//= require socket.io
//= require jquery.jscrollpane.min
//= require jquery.mousewheel
//= require auctions

其中放置在应用程序布局中时,将产生此(部分)html

<head>
  <title>Slamlaunch</title>
  <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css">
<link href="/assets/active_admin.css?body=1" media="all" rel="stylesheet" type="text/css">
<link href="/assets/auctions.css?body=1" media="all" rel="stylesheet" type="text/css">
<link href="/assets/marketing/marketing.css?body=1" media="all" rel="stylesheet" type="text/css">
<link href="/assets/patches.css?body=1" media="all" rel="stylesheet" type="text/css">
<link href="/assets/products.css?body=1" media="all" rel="stylesheet" type="text/css">
<link href="/assets/sessions.css?body=1" media="all" rel="stylesheet" type="text/css">
  <script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-transition.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-affix.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-alert.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-button.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-carousel.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-collapse.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-dropdown.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-modal.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-scrollspy.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-tab.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-tooltip.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-popover.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-typeahead.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap.js?body=1" type="text/javascript"></script>
<script src="/assets/turbolinks.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.turbolinks.js?body=1" type="text/javascript"></script>
<script src="/assets/socket.io.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.jscrollpane.min.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.mousewheel.js?body=1" type="text/javascript"></script>
<script src="/assets/auctions.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
  <meta content="authenticity_token" name="csrf-param">
<meta content="LzMLqv0Sb7+89JGe0U5x2ZGkECJ4l1gfbiD/81jFJD4=" name="csrf-token">
</head>

此外,是的,所有相关代码都在$(function(){})块中或在控制台中执行,很长时间之后加载了所有库。

答案

出现此问题主要是因为脚本加载不正确,根据您的情况,这不是您的情况尝试将所有代码放在

$(function(){
//your code
})

还请检查是否没有两次下载该jQuery

另一答案

请尝试将所有代码放入以下附件中。然后,它为我工作。可能是插件可能未完全加载的问题,因此调用了[[“ $(document).ready(function(){})”。之后,它就像一种魅力。

(function($){ $(document).ready(function(){ //Your plugin functions to be called here. }); })(jquery);
如果使用

“ $(document).ready(function(){})”

,在下文中$(function(){});
这是行不通的。不知道为什么。

以上是关于jQuery插件不起作用……“类型错误:'undefined'不是一个函数”的主要内容,如果未能解决你的问题,请参考以下文章

为啥灯箱 jQuery 插件对我不起作用?

jQuery 验证插件在 WordPress 中不起作用

客户端验证 jquery 插件不起作用

jQuery 验证插件。回发后errorLabelContainer不起作用

参数在 jquery 终端插件中不起作用

jquery/jquery 移动插件 - 小部件 - 调用私有方法不起作用