Bootstrap工具提示交互和自动隐藏

时间:2014-08-30 17:47:59

标签: javascript jquery html css twitter-bootstrap

我的文字包含<span>个部分:

<span id="id1">Text1 Text1 Text1</span><span id="id2">Text2 Text2 Text2</span><span id="id3">Text3 Text3 Text3</span>

这是一个简化的例子。在我的用例中,有更多的文本,任何给定的部分可能跨越一行或多行。

我有一个事件触发器附加到span元素,突出显示“mouseenter”上的相应文本部分,并在“mouseleave”上取消突出显示。工作正常。

除了突出显示之外,我还希望显示一个引导工具提示,或多或少也由“mouseenter”和“mouseleave”事件触发。但后者变得更加复杂:

问题:工具提示包含一些表单元素,现在,用户无法与这些表单元素进行交互,因为工具提示位于包含文本的span元素和当前调用$的“mouseleave”事件上方( '#element')。tooltip('hide')在用户到达之前关闭工具提示。

我做了一些研究,发现了一些可比的How to make bootstrap tooltip to remain visible till the link is clicked,但在这种情况下,工具提示保持打开状态,直到用户点击工具提示中的链接。在我的场景中,用户不一定必须与工具提示进行交互。因此必须有某种自动隐藏机制。

怎么能解决这个问题?

2 个答案:

答案 0 :(得分:0)

您可以使用Bootstrap Popover,它也可以在悬停时触发,因为工具提示通常用于显示消息。

这是小提琴 http://jsfiddle.net/vzzxrLtk/

在数据内容中使用HTML元素时更重要的一点是

data-content='<div id="insideDiv"><input type="text"></input><button class="btn btn-primary">Save</button></div>'>

atrribute你应该再添加一个属性

data-html="true"

答案 1 :(得分:0)

一种解决方案是使用Element.getBoundingClientRect()方法获取span的边界框并保存属性。

然后在上部容器上使用mousemove事件并检查event.clientX / event.clientY是否超出边界框。在这种情况下,请关闭当前可见的工具提示。

显示另一个工具提示mouseenter(span),并且仅在未显示其他工具提示的情况下显示。

对边界框的框架进行一些微调后,效果非常好。

相关问题