【问题标题】:How can i loop through bootstrap tooltips forever using jQuery?如何使用 jQuery 永远循环引导工具提示?
【发布时间】:2013-03-30 00:43:36
【问题描述】:

我的网站上有一些缩略图,它们使用 Twitters Bootstrap 工具提示来显示每个缩略图的名称,我想要做的是循环浏览每个缩略图,延迟 2 秒显示工具提示,然后隐藏它作为下一个弹出。我尝试了几种方法,但没有任何效果。

我已经做到了这样的事情,但那不起作用。

$("[rel=tooltip]").each(function (i) {
      $id=$(this).attr('id');
      $($id).tooltip('show');
  });

这是我的布局的 JSFiddle:http://jsfiddle.net/BWR5D/

有什么想法吗?

【问题讨论】:

    标签: javascript jquery loops twitter-bootstrap tooltip


    【解决方案1】:

    尝试以下方法:

    var ttid = 0, tooltipIds = [];
    $("a[rel=tooltip]").each(function(){
        tooltipIds.push(this.id);
    });
    
    var iid = setInterval(function(){
        if (ttid) $('#'+tooltipIds[ttid-1]).tooltip("hide");
        if (ttid === tooltipIds.length) ttid = 0;
        $('#'+tooltipIds[ttid++]).tooltip("show");
    }, 2000);
    
    • 您可以停止显示工具提示:clearInterval(iid);

    【讨论】:

    • 除了产生错误之外,我似乎无法让它做任何事情。您可以编辑 JSFiddle 以使其正常工作吗?谢谢
    • 我在一行中输入错误的 tooltipIds 数组名称。代码已更新。它在这里工作:jsfiddle.net/say2joe/BWR5D/5
    【解决方案2】:

    以下应该隐藏当前打开的工具提示,然后显示下一个。使用当前索引与缓存元素的长度来确定何时重新开始

    /* cache elements*/
    var $els=$("a[rel=tooltip]").tooltip(), index=-1;
    
    var tipLoop=setInterval(function(){
        index++;
        index =  index < $els.length ? index : 0;
        $els.tooltip("hide").eq( index).tooltip('show');    
    },2000)
    

    演示:http://jsfiddle.net/BWR5D/1/

    【讨论】:

    • 很好,但是在第一个循环之后,工具提示显示不到一秒钟然后消失,有什么办法解决这个问题吗?
    • 不确定是什么原因造成的,似乎是引导程序中的错误。尝试使用有效的 html ,div 不是 &lt;a&gt; 的有效子代。也不确定当用户悬停图像时您没有要求冲突问题
    • 我希望它在用户悬停时暂停和恢复。并且 div 现在只是作为占位符。
    • 建议创建自己的而不是使用引导程序。当用户与图像交互时有更多的控制权。如果使用您自己的代码,可以停止动画。可以使用 bootsrtap css 和 html 结构使其变得简单。只需要几行额外的代码,可能对 html 结构稍作调整
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多