Twitter Bootstrap中的工具提示

71

我正在使用Twitter Bootstrap,但我不是前端开发人员! 然而,它使这个过程变得几乎有趣了!

关于工具提示,我有点困惑。在文档中有介绍,但Twitter假定一些知识。例如,他们说要使用以下JavaScript代码来触发工具提示。

$('#example').tooltip(options)

在查看他们的源代码后,我意识到带有工具提示的字段需要属于一个类,并运行以下代码。

$('.tooltipclass').tooltip(options)

但我的问题是,为什么Twitter Bootstrap不提供这样一个tooltip类?只是为了允许更大的配置吗?将带有工具提示的单个元素添加到tooltipclass中更好,还是应该将周围区域添加到tooltipclass中?如果我使用类标识符(.class)而不是名称标识符(#name)会有影响吗?

7个回答

107

我认为你的问题归结为在设置工具提示时使用适当的选择器,而答案几乎可以是任何你想要的。如果你想使用类来触发工具提示,你可以这样做,例如:

<a href="#" class="link" data-original-title="first tooltip">Hover me for a tooltip</a>

接下来,您可以像这样使用带有.link类附加的所有链接作为工具提示触发:

$('.link').tooltip()

现在,回答你的问题,为什么Bootstrap开发人员没有使用类来触发工具提示,这是因为实际上不需要,你可以使用任何选择器来定位你的工具提示,例如(我个人最喜欢的)rel属性。通过此属性,你可以将所有链接或元素的rel属性设置为tooltip进行定位,如下所示:

$('[rel=tooltip]').tooltip() 

你的链接会像这样:

<a href="#" rel="tooltip" data-original-title="first tooltip">Hover me for a tooltip</a>

当然,您还可以使用容器类或ID来定位特定容器内的工具提示,以便单独针对该容器使用特定选项或将其与其余内容分离,并且您可以像这样使用它:

$('#example').tooltip({
    selector: "a[rel=tooltip]"
})

这个选择器将会针对你的所有提示工具,其中 rel 属性是“在”你的 #example div 内部的,这样你就可以仅为该部分添加特殊样式或选项。简而言之,你几乎可以使用任何有效的选择器来定位你的提示工具,而不需要用额外的类来定位它们,避免代码变得混乱。


完美!$('[rel=tooltip]').tooltip() 有任何性能问题吗? - schmmd
2
@schmmd 我看不出为什么会有性能问题,除非你有10万个工具提示要选择,所以不用太担心,这是一个类似于CSS的属性选择器。 - Andres Ilich
8
您可能不关心语义学,但理想情况下,“rel”最好保留给那些目的,“class”在这里可能更好。请参见https://dev59.com/pm_Xa4cB1Zd3GeqPyjeL。 - cboettig
关于rel="tooltip"的提示很棒! - Jack James
3
最好使用data-rel="tooltip"代替rel="tooltip",以符合HTML标准。 - mynameistechno

14

使用这个的最简单方法是

将这段代码放在头部:

<script>
    $(function ($) {
        $("a").tooltip()
    });
</script>

然后

<a href="#" rel="tooltip" data-placement="bottom" title="My Tooltip Text">
    My link text
</a>

如果你的页面中有任何一个带有rel="tooltip"属性的标签,那么通过这段js代码,就能使用Bootstrap提示框了。

祝你好运。


5

Add this into your header

<script>
    //tooltip
    $(function() {
        var tooltips = $( "[title]" ).tooltip();
        $(document)(function() {
            tooltips.tooltip( "open" );
        });
    });
</script>

然后只需将属性title="您的工具提示"添加到任何元素中。

目前这个对我有用,工具提示出现在元素的顶部。我该如何更改它,使工具提示出现在底部? - Muhammed Bhikha

3

3

我已经引入了JS和CSS文件,但它为什么不起作用呢?后来发现,在<head>中加入以下内容才使其正常工作:

<script>
jQuery(function ($) {
    $("a").tooltip()
});
</script>

2
那是因为这些东西(我指的是提示框等)是jQuery插件。是的,它们假定您具有一些关于jQuery的基础知识。我建议您至少查找一份有关jQuery的基本教程。
您总是需要定义哪些元素应该具有提示框。我不明白为什么Bootstrap应该提供类,您可以自己定义这些类。也许您希望bootstrap自动执行某些魔法?但是这种魔法可能会导致很多问题(不良副作用)。
要轻松实现这种魔法,只需编写$(".myclass").tooltip(),这行代码正好实现了您想要的功能。您唯一需要做的就是将myclass类附加到需要应用提示框的元素上。(只需确保在DOM加载完成后运行该行代码。请参见下文。)
$(document).ready(function() {
    $(".myclass").tooltip();
});

编辑:显然您不能使用类 tooltip (可能是因为它在某些内部位置被使用!)。

我想知道为什么Bootstrap不使用我可以包含的某些类来运行您指定的代码。

您想要的东西几乎产生与您现在必须执行的相同的代码。然而,他们没有这样做的最大原因是因为这会引起很多麻烦。一个人想将其分配给具有ID的元素;其他人想将其分配给具有指定类名的元素;而另一些人则想通过一些选择过程将其分配给一个指定的元素。这三个选项会增加额外的复杂性,而jQuery已经提供了它。我还没有看到许多插件做到您想要的(只是因为这是不必要的;它真的不会节省您的代码)。


1
顺便说一下,这实际上是我尝试过的早期事情。您不能使用类tooltip。它会清空标签的内容。我改用了tooltiparea - schmmd
1
我并不期望有什么魔法,只是好奇为什么Bootstrap不能运行你指定的带有某些可包含类的代码。 - schmmd

0

使用方法很简单:

<a href="#" id="mytooltip" class="btn btn-praimary" data-toggle="tooltip" title="my tooltip">
   tooltip
</a>

使用jQuery:
$(document).ready(function(){
    $('#mytooltip').tooltip();
});

您可以在工具提示的左侧简单地添加this->data-placement="left"
<a href="#" id="mytooltip" class="btn btn-praimary" data-toggle="tooltip" title="my tooltip" data-placement="left">tooltip</a>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接