複数の「データトグル」を備えたブートストラップ制御


153

「data-toggle」を介して複数のイベントをブートストラップコントロールに割り当てる方法はありますか?たとえば、「ツールチップ」と「ボタン」トグルが割り当てられたボタンが欲しいとしましょう。
data-toggle = "tooltip button"を試しましたが、機能したのはツールチップのみです。

編集:

これは簡単に「回避可能」です

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

回答:


330

javascriptを追加したり、ツールチップ関数を変更したりせずにモーダルとツールチップを追加したい場合は、単にその周りに要素をラップすることもできます。

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

6
それはプレゼンテーション層へのプレゼンテーションの懸念を後回しにするので、それは実際には最良のアプローチです。
LastTribunal 2015

3
ただし、いくつかの違いがあります。data-toggle="tooltip"メイン(ボタン)要素の内側はその要素の外側にきちんと表示されますが、スパンラッパーの内側に設定すると、要素と重なります。
ベンジャミン

1
おかげでそれを行う方法
-javascript

短く、シンプルでスマートなソリューション。Span to Anchorタグを追加しても、ブートストラップのデザインは変更されません。したがって、これは、モデルとツールチップを一緒に実行するのに最適なソリューションです。
ankit suthar 2017

これは私にとっては<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>
うまくいき

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 14

3
更新された回答を使用し、非常に簡単で完璧に機能しました
唯一無二のChemistryBlob

1
素敵なソリューションをラップするよりも良い
D3VELOPER 2016

1
これ(およびこの質問の他の解決策)の問題は、クリックしてモーダルを開いてから閉じると、マウスがボタンを離してもツールチップが再び表示される(または表示されたままになる)ことです。たとえば、テーブルのすべての行にボタンがある場合、ボタンが上/下のボタンをブロックする可能性があるため、これは非常に煩わしいです。非表示にする唯一の方法は、ツールチップの外のどこかをクリックすることです。
2016

1
私はこのアプローチがラッパーで受け入れられている答えよりもずっと好きです。DOMに過度の負荷をかけることなくHTML5の能力を拡張するため、非常にシンプルです。また、私の場合、ラッパーアプローチが機能していないようです
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
これは、最もクリーンで
邪魔になら

8

未だに。ただし、誰かがこの機能をいつか追加することが提案されています。

次のブートストラップGithubの問題は、あなたが望んでいることの完璧な例を示しています。それは可能ですが、この段階で独自の回避策コードを書くことなしではありません。

見てみな... :-)

https://github.com/twitter/bootstrap/issues/7011


残念ながら、その問題(#7011)は拒否されました。
TJクラウダー2014

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 2018年

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

もう1つの解決策:

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

2

クラスを使用した素晴らしい解決策があり.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>

ここに画像の説明を入力してください


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.