我正在尝试实现一个简单的脚本:
jQuery(document).ready(function($){
$(window).scroll(function(){
if($(window).scrollTop() >= $(\'#masthead\').outerHeight()) {
$("#masthead").addClass("minimize");
} else{
$("#masthead").removeClass("minimize");
}
});
});
当用户登录到WP时,它可以完美地工作。对于普通用户,脚本将加载到页脚中,但不执行任何操作。
我还从控制台收到此错误:
Uncaught ReferenceError: jQuery is not definedfixed-menu.js?ver=20150318:1 (anonymous function)
PD:我用过
wp_enqueue_script
在我的
functions.php
就像我处理任何其他外部js一样:
function nevermind_scripts() {
wp_enqueue_style( \'nevermind-style\', get_stylesheet_uri() );
wp_enqueue_style( \'nevermind-google-fonts\', \'http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,900,300italic,400italic|Droid+Serif\');
wp_enqueue_style( \'nevermind-font-awesome\', \'http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css\');
wp_enqueue_script( \'nevermind-navigation\', get_template_directory_uri() . \'/js/navigation.js\', array(), \'20120206\', true );
wp_enqueue_script( \'nevermind-fixed-menu\', get_template_directory_uri() . \'/js/fixed-menu.js\', array(), \'20150318\', true );
}
add_action( \'wp_enqueue_scripts\', \'nevermind_scripts\' );
最合适的回答,由SO网友:Ciprian 整理而成
尝试:
wp_enqueue_script( \'nevermind-navigation\', get_template_directory_uri() . \'/js/navigation.js\', array(\'jquery\') );
jQuery可能没有排队,并且您没有将其声明为脚本的依赖项。登录后,jQuery会自动排队。
EDIT: 控制台日志显示jQuery is not defined
. 您是否添加了jQuery(document).ready($)
固定菜单的功能。js函数?
SO网友:kaiser
CDN、远程资源和跨源请求http:
首先为您的CDN。这可能是因为在使用时存在跨源请求问题。省略协议允许浏览器根据情况选择正确的协议。固定协议通常是Chrome中的一个问题,“过度保护的父级”。
JavaScript中的依赖项注入(Dependency Injection)light除此之外,还可以测试是否加载了某些依赖项。通过将其检查到一个自调用函数中并将其记录到控制台,可以很容易地做到这一点:
( function( $ ) {
"use strict";
console.log( $ );
} )( jQuery || {} );
这意味着你要么得到全部
jQuery
对象已记录,或者如果未能足够早地加载,则
{}
/空对象。如果是后者,那么您可以按照@Ciprian的建议:在注册/排队脚本时添加依赖项:
wp_enqueue/register_script(
$handle,
plugin_dir_url( __FILE__ ).\'assets/js/script.js\',
array( \'jquery\' ),
filemtime( plugin_dir_path( __FILE__ ).\'assets/js/script.js\' ),
true
);
如果您不确定得到的是什么,您可能希望对URL/路径转储使用以下函数之一
get_template_directory()
- 父主题根目录的路径get_stylesheet_directory()
- 子主题根目录的路径get_template_directory_uri()
- 父主题根目录的URLget_stylesheet_directory_uri()
- 指向子主题根目录的URLplugin_dir_path( __FILE___ )
- 当前文件的根目录,无论是在子/父主题还是插件中。尾部斜杠结果plugin_dir_url( __FILE__ )
- 当前文件的根目录-在插件中。尾部斜杠结果
PROTip: 使用“文件上次修改时间”/
filemtime()
, UNIX时间戳作为版本号/查询参数,用于按需突破浏览器缓存。