当我添加一个WordPress插件时,“undefined不是一个函数”

时间:2014-11-28 00:17:42

标签: jquery wordpress

我使用自己的jQuery和两个插件(jCarousel,Cycle2)创建了一个网站,另外两个来自WordPress(高级自定义字段和CPT UI)。它一直运行顺利,但现在当我尝试添加一个新的WordPress插件时(我已尝试过Contact Form 7和Kento Ajax Contact Form),我得到了#34; undefined不是一个函数"错误,标记在下面一段代码的最后一行:

// Set jCarousel configuration
        $(function() {
            var hash = 0;

            if (window.location.hash) {
                hash = parseInt(window.location.hash.slice(1));
                hash--;
            }

            $('.jcarousel').on('jcarousel:createend', function() {
                $(this).jcarousel('scroll', hash, false);
            }).jcarousel(); 

(在那段代码之后我有更多的jCarousel配置,但我用}}正确地结束了它;当我完成的时候。

我在$(function(){/ * code here * /})中封装了几个jQuery; ,在jCarousel配置之前和7之后,有没有问题?

我已经尝试将$更改为jQuery以及以下代码:

e(function ($) { $(document); }(jQuery));

我还可以尝试解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我发现了问题。我正在我的header.php文件中加载jQuery,如下所示:

<script src="<?php bloginfo('template_url'); ?>/scripts/jquery.min.js" type="text/javascript"></script>

这导致jQuery被加载两次,因为插件正在加入它。我必须正确地包含jQuery和这样的插件:

function load_plugins() {
if (!is_admin()) {
    wp_deregister_script('jquery');
    wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', false, '1.11.1', true);
    wp_enqueue_script('jquery');

    wp_enqueue_script('cycle2', 'http://malsup.github.com/jquery.cycle2.js', array('jquery'));
    wp_enqueue_script('jcarousel', get_template_directory_uri() . '/js/jquery.jcarousel.min.js', array('jquery'));
} } add_action('init', 'load_plugins');

然后将我的jQuery代码封装在页脚上,如下所示:

(function($) {
    /* jQuery code here */
}(jQuery));