我有一个静态的html主题,我试图将其转换为WorsPress主题。我加载脚本时遇到了一些麻烦。
正在加载脚本,但由于某种原因它们不起作用。
我可以在源代码中看到正在加载jquery:
<script type='text/javascript' src='url/wp-includes/js/jquery/jquery.js?ver=1.11.3'></script>
<script type='text/javascript' src='url/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
所以在我的模板文件夹中,我在此文件夹中有一个文件夹“assets”,我的脚本位于“js”文件夹中。这就是我将脚本加载到我主题的setup.php中的方法。
/**
* Theme assets
*/
function assets() {
wp_enqueue_style('style', get_stylesheet_directory_uri() . '/style.css', false, null);
if (is_single() && comments_open() && get_option('thread_comments')) {
wp_enqueue_script('comment-reply');
}
//header scripts
wp_enqueue_script('backstretch', get_template_directory_uri() . '/assets/js/backstretch.js', ['jquery'], null, false);
wp_enqueue_script('imagesloaded', get_template_directory_uri() . '/assets/js/imagesloaded.pkgd.min.js', ['jquery'], null, false);
//footer scripts
wp_enqueue_script('main-js', get_template_directory_uri() . '/assets/js/main.js', ['jquery'], null, true);
}
add_action('wp_enqueue_scripts', __NAMESPACE__ . '\\assets', 100);
所以在我的main.js中,我在控制台中出现错误,并说
未捕获的TypeError:$不是函数(在$(document).ready行上)
我不知道是什么导致了这个错误,因为正在加载脚本。
答案 0 :(得分:1)
请使用此:
你的main.js中的改变了
$(document).ready
到这个
jQuery(document).ready
另外请将所有$更改为main.js中的jQuery
棘手的是,jQuery的这个特定副本默认情况下处于兼容模式。这意味着典型的&#39; $&#39; jQuery的快捷方式不起作用,因此它不会与使用美元符号的任何其他JavaScript库发生冲突,例如MooTools或Prototype。
许多插件作者和主题开发人员都知道这一点,他们使用了“jQuery”#39;而不是&#39; $&#39;为了安全起见。
答案 1 :(得分:0)
在标题脚本中,您已经在页面上加载了jQuery,那么您不必以[jQuery]
array('jquery')
加载jQuery,而且每次都不需要加载jQuery,更新对此:
wp_register_script('backstretch', get_template_directory_uri() . '/assets/js/backstretch.js', ['jquery'], null, false);
wp_enqueue_script('backstretch');
wp_register_script('imagesloaded', get_template_directory_uri() . '/assets/js/imagesloaded.pkgd.min.js', ['jquery'], null, false);
wp_enqueue_script('imagesloaded');
答案 2 :(得分:0)
你能试试这个:
wp_register_script('backstretch', get_template_directory_uri() . '/assets/js/backstretch.js', ['jquery'], null, false);
wp_enqueue_script('backstretch');
wp_register_script('imagesloaded', get_template_directory_uri() . '/assets/js/imagesloaded.pkgd.min.js', ['jquery'], null, false);
wp_enqueue_script('imagesloaded');