jQuery does not work

时间:2014-04-08 作者:Robbert

我正在从事一个需要jQuery的项目。我将其添加到我的函数中,如果我查看我的页面源代码,脚本将加载到我的标题中,但jQuery不起作用。我做错了什么?

function stn_script_enqueuer() {

    wp_register_script( \'ajax-vote\', get_template_directory_uri() . \'/js/ajax-vote.js\', array(\'jquery\') );


    $nonce = wp_create_nonce("vote_nonce");
    $stn_vote_data = array(
        \'ajaxurl\' => admin_url( \'admin-ajax.php\'),
        \'nonce\' => $nonce,
    );
    wp_localize_script( \'ajax-vote\', \'stn_vote\', $stn_vote_data );


    wp_enqueue_script( \'jquery\' );
    wp_enqueue_script( \'ajax-vote\' );

}
add_action( \'init\', \'stn_script_enqueuer\' );

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

脚本和样式表应始终通过wp_enqueue_scripts action hook. wp_enqueue_scripts 将要出现在前端的项目排队时,是否使用合适的挂钩

这个init 钩子在之前执行wp_head 这对于要在标头中加载脚本来说是很早的。这个wp_enqueue_scripts 动作挂钩在wp_head, 允许正确加载脚本和样式。这还可以命名脚本依赖项,并对脚本和样式进行排序以正确加载

SO网友:HamzStramGram

您应该首先使用钩子加载脚本wp_enqueue_scripts 例如:

add_action( \'wp_enqueue_scripts\', \'load_my_scripts\' );
function load_my_scripts() {
    wp_enqueue_script( \'jquery\' );
}
我喜欢做的是,用钩子注册我的脚本init 然后用钩子钩住他们wp_enqueue_scripts:

// Register Scripts
add_action(\'init\', \'my_register_scripts\');
function my_register_scripts() {
    wp_register_script( \'myscript\', get_template_directory_uri() . \'/js/my.js\', array(\'jquery\'));
}

//Enqueue Scripts
add_action(\'wp_enqueue_scripts\', \'my_enqueue_scripts\');
function my_enqueue_scripts() {
    wp_enqueue_script(\'myscript\');
}
然后,有一点需要记住:Wordpress将以无冲突模式加载jQuery,这意味着您必须根据这一点正确编写依赖jQuery的脚本。

示例:

jQuery(document).ready(function() {
    /* if you add some code here, you will have to use "jQuery" as a selector */

    jQuery(".mydiv").css(\'background-color\', \'red\');
});
或者,您可以添加“$“作为function() 使用默认选择器。

jQuery(document).ready(function($) {
    /* if you add some code here, you will have to use "$" as a selector */

    $(".mydiv").css(\'background-color\', \'red\');
});
希望这会有所帮助,如果没有,请详细说明您的问题。

结束