具有多个“数据切换”的引导程序控制


153

有没有一种方法可以通过“数据切换”为引导程序控件分配多个事件。例如,假设我想要一个分配了“工具提示”和“按钮”切换开关的按钮。
尝试使用data-toggle =“ tooltip button”,但只有工具提示有效。

编辑:

这很容易“解决”

$("#newbtn").toggleClass("active").toggleClass("btn-warning").toggleClass("btn-success");

Answers:


330

如果您想添加模式和工具提示而不添加JavaScript或更改工具提示功能,则还可以将元素包装起来:

<span data-toggle="modal" data-target="modal">
    <a data-toggle="tooltip" data-placement="top" title="Tooltip">
      Hover Me           
    </a>
</span>

6
实际上,这是最好的方法,因为它可以将表示的问题推迟到表示层。
LastTribunal

3
但是有一些区别:data-toggle="tooltip"main(按钮)元素的内部将整齐地显示在该元素的外部,而如果在span包装器中进行设置,则它将与该元素重叠。
本杰明

1
谢谢,这是应该怎么做的-没有javascript
tsadkan yitbarek '16

简短,简单,智能的解决方案。将Span添加到Anchor标签不会改变引导程序的设计,因此这是同时运行模型和工具提示的理想解决方案。
ankit suthar

这对我不起作用<span data-toggle="modal" data-target="#myModalForm" title="Click to edit row" data-row="0" data-cmid="425" data-id="11788" data-src="1.1.1.1" data-src_desc="null" data-dst="2.2.2.2" data-dst_desc="null" data-protocol="TCP" data-ports="80" data-remarks="none"><a class="btn btn-sm btn-info" data-toggle="tooltip" title="Click to edit row" data-original-title="Click to edit row" data-trigger="hover" href="javascript:void(0)"><i class="fa fa-pencil" aria-hidden="true"></i></a></span>
shorif2000

72

由于工具提示不会自动初始化,因此您可以在工具提示的初始化中进行更改。我确实是这样的:

$(document).ready(function() {
    $('body').tooltip({
        selector: "[data-tooltip=tooltip]",
        container: "body"
    });
});

使用此标记:

<button type="button" data-target="#myModal" data-toggle="modal" data-tooltip="tooltip" class="btn btn-info" title="Your tooltip">Text here</button>

请注意data-tooltip

更新资料

或者简单地说,

$('[data-tooltip="tooltip"]').tooltip();

10
使用$('[data-tooltip =“ tooltip”]')。tooltip();进行简化。
Ryan Currah 2014年

3
使用您的最新答案,非常简单,完美运行
The One and Only ChemistryBlob

1
比包装好的解决方案
更好

1
此问题(以及当前此问题中的其他解决方案)的问题在于,当您单击以打开模式,然后将其关闭时,即使鼠标已离开按钮,工具提示也会再次显示(或保持可见)。如果您在每行的表中都有按钮,这将非常烦人,因为它们可能会阻塞上方/下方的按钮。隐藏它的唯一方法是单击工具提示之外的某个位置。
2016年

1
我比包装器接受的答案更喜欢这种方法。这很简单,因为它可以扩展HTML5的容量,而不会使DOM过载过多。同样在我看来,包装方法似乎不起作用
Canelo Digital

11

我设法解决了这个问题,而无需使用以下jQuery更改任何标记。我有一个类似的问题,我想在按钮上使用工具提示,而该工具提示已经在使用数据切换模式。您只需要在按钮上添加标题即可。

$('[data-toggle="modal"][title]').tooltip();

9

这是我刚刚实现的最佳解决方案:

的HTML

<a data-toggle="tooltip" rel="tooltip" data-placement="top" title="My Tooltip text!">Hover over me</a>

无论使用哪种方法,无论如何都需要包括JAVASCRIPT

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

1
这是最干净,最不
令人讨厌的


3

我使用href加载模式并保留数据提示作为工具提示:

<a 
    data-toggle="tooltip"
    data-placement="top"
    title="My Tooltip text!"
    href="javascript:$('#id').modal('show');"
>
+
</a>

3

由于Bootstrap强迫您仅通过Javascript初始化工具提示,因此我更改为data-toggle="tooltip"(因为它没有用),class="bootstrap-tooltip"并使用此Javascript初始化了我的工具提示:

$('.bootstrap-tooltip').tooltip();

因此,我可以随意将data-toggle属性用于其他用途(例如data-toggle="button")。


大。也添加HTML。
Web_Developer

2

只是为了补充@Roman Holzner回答...

就我而言,我有一个显示工具提示的按钮,应该保持禁用状态,直到进一步操作为止。使用他的方法,即使按钮被禁用,模态也可以工作,因为它的调用位于按钮外部-我在Laravel刀片文件中,只是要清楚:)

<span data-toggle="modal" data-target="#confirm-delete" data-href="{{ $e->id }}">
    <button name="delete" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Excluir Entrada" disabled>
        <i class="fa fa-trash fa-fw"></i>
    </button>
</span>

因此,如果您只想在按钮处于活动状态时显示模态,则应更改标签的顺序:

<span data-toggle="tooltip" data-placement="bottom" title="Excluir Entrada" disabled>
    <button name="delete" class="btn btn-default" data-href="{{ $e->id }}" data-toggle="modal" data-target="#confirm-delete" disabled>
        <i class="fa fa-trash fa-fw"></i>
    </button>
</span>

如果要对其进行测试,请使用JQuery代码更改属性:

$('button[name=delete]').attr('disabled', false);

2

另一种解决方案:

    <a data-toggle="modal" data-target="#exampleModalCenter">
      <span
        class="tags"
        data-toggle="tooltip"
        data-placement="right"
        title="Tooltip text"
      >
        Text
     </span>
   </a>

2

有一个很好的解决方案使用class .stretched-link。按钮必须有一个类.position-relative。这是一个完整的工作示例:

工具提示必须添加到按钮上,否则其位置将不正确。

$('[data-toggle="tooltip"]').tooltip();
/*DEMO*/.btn{margin-left:5rem;margin-top:5rem}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

<!--BUTTON-->
<button class="btn btn-primary position-relative" data-toggle="tooltip" data-trigger="hover" data-placement="left" title="Tooltip text">
    <span class="stretched-link" data-toggle="modal" data-target="#exampleModal"></span>
    Click Me!
</button>

<!--DEMO MODAL-->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><h5 class="modal-title" id="exampleModalLabel">Modal title</h5><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body">Modal body</div></div></div></div>

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js"></script>


1

当在标签上打开模态并想要显示工具提示时,如果在标签内实现工具提示,它将在工具标签附近显示工具提示。像这样

在此处输入图片说明

我建议在标签外使用div并使用“ display:inline-block;”

<div data-toggle="tooltip" title="" data-original-title="Add" style=" display inline-block;">
    <a class="btn btn-primary" data-toggle="modal" data-target="#myModal" onclick="setSelectedRoleId(6)">
     <span class="fa fa-plus"></span>
    </a>
</div>

在此处输入图片说明


0

<a data-toggle="tooltip" data-placement="top" title="My Tooltip text!">+</a>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.