在元素悬停上播放bxSlider

时间:2014-03-19 14:20:42

标签: javascript jquery css wordpress bxslider

我有一个wordpress循环将多个bxsliders加载到一个页面上,我希望这些滑块单独启动并在父元素悬停时单独停止。我无法弄清楚如何做到这一点。

显然我需要使用

$('.item').each

但我不知道如何在悬停时停止并启动bxslider。有没有人有解决方案?

以下是一些示例代码:

if ( have_posts() ) while ( have_posts() ) : the_post(); 
            ?>
                <div class="item">
                            <div class="thumbnail clearfix">
                                <ul>
                                    <li><?php if ( has_post_thumbnail()) : // Check if Thumbnail exists ?>
                                        <h1 title="<?php the_title(); ?>" >
                                            <a href="<?php the_field('website_url'); ?>"><?php the_post_thumbnail(); ?></a>
                                        </h1>
                                        <?php endif; ?>
                                    </li>
                                    <li>
                                        <div>
                                        <?php if (class_exists('MultiPostThumbnails')) : MultiPostThumbnails::the_post_thumbnail(get_post_type(), 'secondary-image'); endif; ?>
                                        </div>
                                    </li>
                                    <li>
                                        <div>
                                        <?php if (class_exists('MultiPostThumbnails')) : MultiPostThumbnails::the_post_thumbnail(get_post_type(), 'third-image'); endif; ?>
                                        </div>
                                    </li>
                                </ul>
                             </div>
                     </div> 
<?php endwhile; ?>

所以你可以看到我,在滑块中拉出3个缩略图...这是在一个帖子内,所以页面上可以有1到10之间的任何地方。

我的第一个想法是在悬停时启动bxslider ....

    $('.item').each(function(){
    $(this).hover({
        $(this).find('.thumbnail ul').bxSlider({
            auto: true
        });
    });
});

但这不起作用。我想要它,我希望它在每一个上构建滑块...然后当用户盘旋使滑块开始...并在鼠标关闭停止。

先谢谢。

1 个答案:

答案 0 :(得分:3)

您应该查看bxSlider API方法 here

解决方案是使用.startAuto();.stopAuto();

$('.bxSlider').each(function() {
    var _this = $(this).bxSlider({
        auto: false,
        speed: 200,
        pause: 500
    });
    _this.mouseenter(function() {   
         _this.startAuto();      
     }).mouseleave(function() {   
         _this.stopAuto();
    });
});

示例: http://jsfiddle.net/verber/KBfx9/28/

要将事件与滑块相关联,请使用以下内容:

     $('.yourParentParent').mouseenter(function() {   
         _this.startAuto();      
     }).mouseleave(function() {   
         _this.stopAuto();
     });

如果您不想在页面上启动所有滑块,请将_this更改为您确切的bxSlider选择器。