TypeError:'undefined'不是一个对象(评估'$ .fn') - Wordpress& shuffle.js

时间:2014-05-22 17:02:35

标签: javascript jquery wordpress

我花了好几个小时试图解决这个问题。

我正在尝试将shuffle.js包含在我的Wordpress主题中。它依赖于jQuery 1.9+& Modernizr的。

我已通过wp_enqueue_script添加了我的脚本(见下文)

wp_enqueue_script( 'jquery');
wp_enqueue_script( 'modernizer', get_stylesheet_directory_uri() . '/js/modernizr.custom.js', array( 'jquery' ), '1', true );
wp_enqueue_script( 'shuffle', get_stylesheet_directory_uri() . '/js/jquery.shuffle.js', array( 'modernizer' ), '1', true );
wp_enqueue_script( 'my-shuffle', get_stylesheet_directory_uri() . '/js/my-shuffle.js', array( 'shuffle' ), '1', true );

我让他们彼此依赖,我将它们加载到页脚。

我已将3 .js个文件包装在一些jQuery noConflict Wrappers中(见下文)

(function($) {
    // Inside of this function, $() will work as an alias for jQuery()
    // and other libraries also using $ will not be accessible under this shortcut
})(jQuery);

我仍然收到错误:

Uncaught TypeError: Cannot read property 'fn' of undefined 
jquery.shuffle.js?ver=1:1212

Uncaught TypeError: Object [object Object] has no method 'shuffle' 
my-shuffle.js?ver=1.6

我读到的所有东西都指向没有按顺序加载的东西,jQuery没有加载,但我认为不是这样的。当然我可能错了:)

有没有人有我可以尝试的想法?

[UPDATE]

我去了jQuery 1.11.1的缩小版本,并将其替换为捆绑了Wordpress的版本,并且全部开始行动了!

只有半天失利:(

[更新2]

见凯文的答案如下。无需更改捆绑的jQuery,有一个更新版本的shuffle.js

2 个答案:

答案 0 :(得分:1)

Shuffle.js 错误地使用window.$而不是window.jQuery。通过替换this line来修复它:

factory(window.$, window.Modernizr);

这一个:

factory(window.jQuery, window.Modernizr);

它是near the top


作者已经解决了这个问题,你可以从这里下载固定版本:https://github.com/Vestride/Shuffle/blob/e6cb28bd1eb4a5ff60b5d2925b1e26d857f3ec2a/dist/jquery.shuffle.js

答案 1 :(得分:0)

我们无法帮助您,除了告诉您jQuery实际上并未定义,并且您必须在浏览器中对其进行调试。

检查您网页的来源,找到您的<script src="jquery...">并确定该文件是否

  1. 实际上被包含在内(错误控制台上没有404&#39)和
  2. 包含在首次尝试使用jQuery
  3. 之上
  4. 包含在任何jQuery插件的<script>标记
  5. 之上