JQuery脚本在‘head’标记内不起作用

时间:2016-08-28 作者:user2397435

因此,我编写了一个简单的脚本,并将其正确地排队。

my-jquery-script.js:

jQuery(document).ready(function($) {
$(\'#some_id\').on(\'click\',\'.clone\',function(e){
alert(\'clicked\');
/*.....*/
e.preventDefault();
});
});

functions.php:

add_action( \'wp_enqueue_scripts\', \'my_function\' );

function my_function() {

wp_enqueue_script( \'my-jquery-script\', get_stylesheet_directory_uri() . \'/js/my-jquery-script.js\' );

}

some-page.php:

<?php wp_head(); ?>
<body>

<form>
<div id="some_id">
<a href="#" class="clone">button</a>
</div>
</form>

</body>
<?php wp_footer(); ?>
它不起作用,但当我将jQuery脚本手动包含到某个页面中时。php如下:

<?php wp_head(); ?>
<body>

<form>
<div id="some_id">
<a href="#" class="clone">button</a>
</div>
<script type=\'text/javascript\' src=\'<?php echo get_stylesheet_directory_uri() . "/js/my-jquery-script.js"; ?>\'></script>
</form>

</body>
<?php wp_footer(); ?>
它正在工作,但“$(document).ready()会触发两次”,如下所述:https://stackoverflow.com/questions/10727002/jquery-document-ready-fires-twice

我做错了什么?任何帮助都将不胜感激。

更新:我还注意到$(document.body).on(\'click\',\'.clone\',function(e){ } 选择器正在工作,而不是id选择器

2 个回复
SO网友:fuxia

如果您的脚本依赖于jQuery,则必须声明该依赖关系,以确保WordPress比您的更早将其排队。

wp_enqueue_script( 
    \'my-jquery-script\', 
    get_stylesheet_directory_uri() . \'/js/my-jquery-script.js\',
    [ \'jquery\' ] /* declare the dependency */
);

SO网友:user2397435

我最终改变了主题,解决了我的问题。

相关推荐

JQuery php请求返回一个奇怪的结果

我有一个奇怪的小故障发生在我身上,我不知道我是如何产生它的,或者它是否是正常的。我正在开发自己的插件,当一个足球队/足球队被输入到一个框中时,它会检查它是否已经在数据库中。以下是我的代码行add_action( \'admin_footer\', \'fws_teamcheck_javascript\' ); function fws_teamcheck_javascript() { ?> <script type="text/javascript">