在循环播放Boostrap Popover

时间:2017-04-21 18:57:21

标签: javascript jquery twitter-bootstrap loops

DEMO:http://jsfiddle.net/0s730kxx/

我正在尝试打开Bootstrap Popover以自动打开循环但到目前为止我已经只管理了一次自动播放。

HTML:

<div class="container">
    <a href="#" title="Header"class="myclass p1" data-toggle="popover" data-trigger="hover" data-placement="left" data-content="Some content">Hover Left</a> | 
    <a href="#" title="Header"class="myclass p2" data-toggle="popover" data-trigger="hover" data-placement="right" class="myclass" data-content="Some content">Hover Right</a> | 
    <a href="#" title="Header" class="myclass p3" data-toggle="popover" data-trigger="hover" data-placement="top" data-content="Some content Yo Bestie">Click Me</a>
</div>

JS:

$(document).ready(function(){
var time = 1000;
var len = $('.myclass').length;
var count = 0;
var fun = setInterval(function(){
  count++;
  if(count>len){
    clearInterval(fun);
  }
    $('.p'+count).popover('show');
  if(count>1){
    var pre = count-1;
    $('.p'+pre).popover('hide');
  }
}, time);
});

有人可以帮忙吗?我希望它循环播放,因此它可以永久播放或至少播放10或20次。

4 个答案:

答案 0 :(得分:1)

那是因为你添加了行

if(count>len){
 clearInterval(fun);
}

显示它们后,1次计数为3,并调用clearInterval(fun) 它终止了对函数fun()的进一步调用。

答案 1 :(得分:1)

原始评论:您无法清除间隔并期望循环继续!而不是清除将计数设置回0.但是你还需要记住隐藏最后一个弹出窗口。

var fun = setInterval(function(){
  count++;
  $('.p' + count).popover('show');

  if(count > 1){
    $('.p' + (count - 1)).popover('hide');
  }

  if(count > len){
    count = 0;
  }  
}, time);

这是一个小提琴:http://jsfiddle.net/89gcqnfm/

答案 2 :(得分:1)

修改小提琴的javascript部分,如下所示:

$(document).ready(function(){
var time = 1000;
var len = $('.myclass').length;
var count = 0;
var fun = setInterval(function(){
  count++;
  if(count>len){

    $('.p'+(count-1)).popover('hide');
    count = 1;
    //clearInterval(fun);
  }
    $('.p'+count).popover('show');
  if(count>1){
    var pre = count-1;
    $('.p'+pre).popover('hide');
  }
}, time);
});

由于您未在此修改后的代码段中清除时间间隔,因此它将按预期永久运行。

答案 3 :(得分:1)

简单和模块化算术是你的朋友:

$(document).ready(function(){
var time = 1000;
var eles = $('.myclass');
var count = 0;
var fun = setInterval(function(){
    if(eles.length < 1)
       return (console.log("No elements found!")&&!1) || clearInterval(fun);

    eles.eq(count%eles.length).popover('hide');
    eles.eq(++count%eles.length).popover('show');
}, time);
});

https://jsfiddle.net/L2487dfy/