脚本无法在Wordpress中正确检测jQuery

时间:2014-05-23 16:56:33

标签: javascript jquery wordpress

我有一个计时器脚本,我已经在functions.php

中使用以下方法加载到Wordpress中
function timer_scripts_method() {
    wp_enqueue_script(
        'custom-script',
        get_template_directory_uri() . '/quiz/js/timer.js',
        array( 'jquery' )
    );
}

add_action( 'wp_enqueue_scripts', 'timer_scripts_method' );

脚本本身以以下行开头和结尾

(function () { [...] }).call(this);

我尝试了以下方法来实现这一目标:

(function ($) { [...] }).call(this);  

(function () { [...] }).call(this)(jQuery);

jQuery.noConflict(); (function () { [...] }).call(this);

jQuery.noConflict(); (function () { [...] }).call(this)(jQuery);

可以在这里找到完整的JS代码(美化)http://pastebin.com/X7py7ecb

我得到的控制台错误是

Uncaught Error: [jQuery-runner] jQuery library is required for this plugin to work

我还可以确认其他对jQuery具有依赖性的JS库已经加载了很好。

在JS上表现不佳我觉得这是非常明显的,我不知道。

2 个答案:

答案 0 :(得分:1)

正如@cpilko在评论中提到的那样,你需要将jQuery Runner插件排入队列。

你可以这样做;

function timer_scripts_method(){

    wp_enqueue_script( 'jquery-runner', get_template_directory_uri() . '/js/jquery-runner.js', array('jquery') );
    wp_enqueue_script( 'quiz-timer', get_template_directory_uri() . '/quiz/js/timer.js', array('jquery', 'jquery-runner') );

}
add_action( 'wp_enqueue_scripts', 'timer_scripts_method' );

你不应该再次将jQuery排队,因为这会自动发生。

答案 1 :(得分:0)

在下面的函数文件中更改代码:

function timer_scripts_method() {

    wp_enqueue_script('jquery');
    wp_enqueue_script(
        'custom-script',
        get_template_directory_uri() . '/quiz/js/timer.js');
}
add_action( 'wp_enqueue_scripts', 'timer_scripts_method' );