0

我正在关注关于在 Wordpress 中使用自定义帖子类型构建 jQuery Accordion 的教程,除了返回以下错误的实际 Accordion 之外,一切正常:

Uncaught TypeError: Object [object Object] has no method 'accordion'

根据谷歌搜索时发现的建议,我在 header.php 中注释掉了硬编码的 jQuery 调用,并且 jQuery 在functions.php 中加载如下:

if ( !is_admin() ) {
  wp_deregister_script('jquery');
  wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"), false);
  wp_enqueue_script('jquery');
}

该代码生成以下 html:

<div id="#wptuts-accordion">
  <h3><a href="">Testimonial 1</a></h3>
  <div><p>This is testimonial Text</p></div>
  <h3><a href="">Testimonial 2</a></h3>
  <div><p>This is testimonial 2</p>
</div>

导致错误的jQuery代码如下:

jQuery(document).ready(function() { 
  jQuery("#wptuts-accordion").accordion();  
}); 

教程代码还包括以下内容,我假设只是下载了 jQuery css 并注册了脚本,但我想知道这是否是问题所在

add_action( 'wp_enqueue_scripts', 'wptuts_enqueue' );  
function wptuts_enqueue() {  
    wp_register_style('wptuts-jquery-ui-style', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/themes/south-street/jquery-ui.css');  
    wp_enqueue_style('wptuts-jquery-ui-style');  
    wp_register_script('wptuts-custom-js', get_template_directory_uri() . '/testimonials/testimonials.js', 'jquery-ui-accordion', '', true);  
    wp_enqueue_script('wptuts-custom-js');  
} 

jQuery 似乎只在页面上加载一次。

有什么想法可以解决这个问题吗?

4

1 回答 1

1

起初这可能有点令人困惑。 wp_register_script第三个参数必须是一个依赖数组。你有一个字符串。所以我应该是:

wp_register_script(
    'wptuts-custom-js',
    get_template_directory_uri() . '/testimonials/testimonials.js',
    array('jquery', 'jquery-ui-accordion'), // an array of the js files it depend on
    '',
    true
);

一般提示,如果您遵循教程,请在问题中提供指向教程的链接

于 2012-12-13T12:35:05.483 回答