使用jquery在wordpress中切换帖子

时间:2010-09-10 19:19:29

标签: php jquery wordpress loops toggle

我正在尝试做一些我以前在wordpress中没见过的东西。基本上,当您到达博客时,会显示标题,缩略图和摘录。按下切换按钮时,帖子应向下滑动以显示内容。 (<?php the_content(); ?>

这是我的Jquery:

$(document).ready(function() {
          $('span.play a').click(function() {
               if ($('.toggleSection').is(":hidden"))
               {
                    $('.toggleSection').slideDown("slow");
               } else {
                    $('.toggleSection').slideUp("slow");
               }
               return false;
          });
     });

完美无缺!然而;因为切换位于wordpress循环中,每当按下切换按钮时,所有的帖子都会打开。例如,如果我在一个页面上有10个帖子,并且单击了一个切换按钮,则所有切换都会打开。这是我的WP循环:

<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
                <div class="post" id="<?php the_ID(); ?>">
                    <div class="thumbnail">
                       <?php the_post_thumbnail( 'mainimg' ); ?>
                        <span class="play"><a href="#" onclick="jQuery('#comments').toggle();"><img src="<?php echo bloginfo('template_url'); ?>/images/play.png" width="30" height="36" alt="Play Video"></a></span>
                    </div>


                    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                    <h3>Posted in: <span><?php the_category(', ') ?>  </span>On: <span><?php the_time('l, F jS, Y') ?></span></h3>

                    <div class="entry">
                        <p><?php the_excerpt(); ?> </p>   
                    </div> <!-- entry -->

                    <div class="toggleSection">
                    <p><?php the_content(); ?> </p>
                    </div>



                </div> <!-- .post -->

              <?php endwhile; ?>

您在上面看到的是,当点击span.play a时,切换部分会向下滑动并显示内容。选择任何单个切换时,将显示所有内容。我想这样,所以每个切换在WP循环中都是唯一的,并且只显示该条目的内容。有什么想法吗?

到目前为止,您可以看到我的工作演示:http://vitaminjdesign.com/littlewindow/按缩略图上的播放按钮进行切换!

1 个答案:

答案 0 :(得分:4)

您可以缩减当前代码并解决问题,并将其全部切换为:

$(function() {
  $('span.play a').click(function() {
     $(this).closest('.post').find('.toggleSection').slideToggle();
     return false;
  });
});

这取决于使用.closest().post元素,然后执行.find()仅在 .toggleSection内获取.post }。然后,切换代码可以缩小为.slideToggle()调用。以上内容围绕使用当前元素$(this),然后遍历以查找使用tree traversal functions之后的元素。