未定义WordPress jQuery错误

时间:2012-08-20 作者:Nistor Alexandru

您好,我刚刚学习了如何将jQuery添加到wordpress主题,它可以工作,但wordpress开发工具中不断出现错误。以下是我发布的代码:

    function register_js(){
    if(!is_admin()){
        wp_deregister_script(\'jquery\');
        wp_register_script(\'jquery\' , \'http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js\');
        wp_register_script(\'quicksand\', get_template_directory_uri() . \'/js/quicksand.js\', \'jquery\');
        wp_register_script(\'easing\', get_template_directory_uri() . \'/js/easing.js\', \'jquery\');
        wp_register_script(\'custom\', get_template_directory_uri() . \'/js/main.js\', \'jquery\', \'1.0\', TRUE);
        wp_register_script(\'prettyPhoto\', get_template_directory_uri() . \'/js/jquery.prettyPhoto.js\', \'jquery\');


        wp_enqueue_script(\'jquery\');
        wp_enqueue_script(\'quicksand\');
        wp_enqueue_script(\'prettyPhoto\');
        wp_enqueue_script(\'easing\');
        wp_enqueue_script(\'custom\');
    }

}
add_action(\'wp_enqueue_scripts\', \'register_js\');
这不是我用来获取错误$,jQuery没有定义。为了解决主js文件中的$问题,我使用了以下方法:

jQuery(document).ready(function($) {})
现在我只收到以下错误:

Error: ReferenceError: jQuery is not defined
Source File: http://localhost/wordpress/wp-content/themes/01MyWork/js/quicksand.js
Line: 307


Error: ReferenceError: jQuery is not defined
Source File: http://localhost/wordpress/wp-content/themes/01MyWork/js/easing.js
Line: 39

Error: ReferenceError: jQuery is not defined
Source File: http://localhost/wordpress/wp-content/themes/01MyWork/js/main.js
Line: 2
脚本似乎正常工作唯一的问题是,我加载的每个脚本都会引发此错误。我如何解决这个问题?

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

你的主要问题是de-registering core jQuery. 不要那样做。曾经时期如果去掉了它,其他脚本将正常工作。只需这样做:

function wpse62373_register_js() {
    if ( ! is_admin() ) {
        wp_enqueue_script(\'quicksand\', get_template_directory_uri() . \'/js/quicksand.js\', array( \'jquery\' ) );
        wp_enqueue_script(\'easing\', get_template_directory_uri() . \'/js/easing.js\', array( \'jquery\' ) );
        wp_enqueue_script(\'custom\', get_template_directory_uri() . \'/js/main.js\', array( \'jquery\' ), \'1.0\', TRUE);
        wp_enqueue_script(\'prettyPhoto\', get_template_directory_uri() . \'/js/jquery.prettyPhoto.js\', array( \'jquery\' ) );    
    }

}
add_action( \'wp_enqueue_scripts\', \'wpse62373_register_js\' );
有很多方法可以正确地替换核心WordPress脚本,但我不会通过提供答案来促进错误的实践,例如替换核心WordPress脚本。

SO网友:woony

我想你的$deps 需要是数组。

示例:

<?php   
wp_enqueue_script(\'jquerylib\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js\');  
wp_enqueue_script(\'myscript\', bloginfo(\'template_url\').\'/js/myScript.js\'__FILE__), array(\'jquerylib\'));  
?> 
不是

<?php   
wp_enqueue_script(\'jquerylib\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js\');  
wp_enqueue_script(\'myscript\', bloginfo(\'template_url\').\'/js/myScript.js\'__FILE__), \'jquerylib\');  
?>
就像你做的那样。

参考号:http://codex.wordpress.org/Function_Reference/wp_register_script -> $deps

结束

相关推荐