我使用自己的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));
我还可以尝试解决这个问题吗?
答案 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));