Wordpress脚本无法正确加载?

时间:2016-03-14 10:29:53

标签: javascript php jquery wordpress

我有一个静态的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行上)

我不知道是什么导致了这个错误,因为正在加载脚本。

3 个答案:

答案 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');