javascript - 在 Wordpress 中排队 jQuery
问题描述
我正在尝试通过 functions.php 将我的 jQuery 文件排入队列,但它似乎不起作用。
我知道该脚本有效,因为如果我将它放在包含在其中的 .php 文件的底部,<script>...</script>
它就可以正常工作
该文件被称为 jargon.js
我使用以下方法调用了functions.php中的文件:
add_action('wp_enqueue_scripts','asap_scripts');
// Register your assets during `wp_enqueue_scripts` hook inside
`functions.php`.
function asap_scripts() {
// Give the path of the script
wp_register_script('js-jargon', get_stylesheet_directory_uri() .
'/js/jargon.js',array('jquery'));
}
我正在使用 jQuery,我的 JS 代码如下:
function toggleAnswer() {
jQuery(this).next('.jargon-desc').slideToggle();
}
jQuery('.jargon-desc').hide();
jQuery('.jargon-header').click(toggleAnswer);
任何帮助都会很棒。我使用相同的方法调用了其他脚本并且效果很好。但我似乎对这个有问题..?
解决方案
首先 - 请在问题中包含 JS,以及您从控制台或 php、日志等获得的错误(not working
不是描述..)
无论如何——
看来您正在注册脚本句柄,但并没有真正入队..
<?php
function asap_scripts() {
wp_register_script('my_amazing_script_handle', get_stylesheet_directory_uri() .
'/js/jargon.js', __FILE__), array('jquery'),'1.1', true);
wp_enqueue_script('my_amazing_script_handle');
}
add_action( 'wp_enqueue_scripts', 'asap_scripts' );
?>
如您所见,wp_register_script()
仅注册您的句柄,然后wp_enqueue_script()
是根据注册的句柄实际触发包含的那个。
至于其他可能的罪魁祸首以及调试的经验法则(因为 OP 中缺乏信息):
尝试结合以下三点进行调试:
- 指定 jQuery 而不是 $。(wp 中的已知问题)
如果你使用 jQuery - 然后指定jQuery('el')
而不是$('el')
- 将脚本排入页脚(挂钩 wp_footer() 操作)
像这样:
wp_enqueue_script( 'my-script-handler-js',
plugins_url( '/src/my-script.js', dirname( __FILE__ ) ),
array( 'jquery' ),
filemtime( plugin_dir_path( __FILE__ ) . '/src/my-script.js' ),
,'ver', TRUE );
- 用
jQuery(document).ready(function ($) { ... });