手风琴仅适用于首发......
我知道已经发布了类似的问题,在阅读了所有这些问题之后,我似乎无法弄清楚为什么我的工作不起作用。
我在functions.php中排队脚本,如下所示:
function my_scripts_method() {
if ( !is_admin() ) {
wp_enqueue_script('jquery-ui-accordion');
wp_enqueue_script(
'custom-accordion',
get_template_directory_uri() . '/js/accordion.js',
array('jquery')
);
}
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
.js文件是这样的:
jQuery(document).ready(function($) {
$( "#accordion" ).accordion({
collapsible: true,
active: false
});
});
自定义帖子类型循环如下:
<?php while ( have_posts() ) : the_post(); ?>
<div id="accordion">
<h3><?php the_title(); ?></h3>
<div>
<?php the_content(); ?>
</div>
</div> <!--#accordion-->
<?php endwhile; ?>
手风琴只适用于第一个帖子......
任何想法为什么?
有问题的网址:premierdev1(点)hcg(点)bz / prm_faq /
答案 0 :(得分:0)
您可以在Firefox中使用Firebug等工具。
通过启用Firebug查看您的网站,查看“控制台”标签,我可以看到导致错误的原因是由于错误:
TypeError: $ is not a function
var icons = $( ".selector" ).accordion( "option", "icons" );
该代码位于您的脚本文件中:
http://premierdev1.hcg.bz/wp-content/themes/premier-reverse/js/accordion.js?ver=3.8.1
问题是你不能在WordPress中使用jQuery的$
函数,你必须使用jQuery
- 除非你在文档就绪函数中这样构造:
jQuery(function($) {
// Do stuff in here, can use $ if you like
});
因此,为了纠正这个问题,我建议将该文件更改为:
jQuery(document).ready(function($) {
$( "#accordion" ).accordion({
collapsible: true,
active: false
});
/* Move the below lines into your document ready */
// getter
var icons = $( ".selector" ).accordion( "option", "icons" );
// setter
$( ".selector" ).accordion( "option", "icons", { "header": "ui-icon-plus", "activeHeader": "ui-icon-minus" } );
});
答案 1 :(得分:0)
简单修复:
将手风琴div放在循环外面。像魅力一样工作!
<div id="accordion">
<?php while ( have_posts() ) : the_post(); ?>
<h3><a href="#"><?php the_title(); ?></a></h3>
<div>
<p><?php the_content(); ?></p>
</div>
<?php endwhile; ?>
</div> <!--#accordion-->