Twitter Bootstrapのツールチップで複雑なHTMLを使用できますか?


143

公式ドキュメントを確認すると、HTMLというプロパティが表示されます。

Name    |    Type       |    default  |    Description
----------------------------------------------------------------------------
html    |    boolean    |    false    |    Insert html into the tooltip. 
                                           If false, jquery's text method 
                                           will be used to insert content 
                                           into the dom. Use text if you're 
                                           worried about XSS attacks.

「ツールチップにhtmlを挿入する」とありますが、タイプはブール値です。ツールチップ内で複雑なHTMLを使用するにはどうすればよいですか?

回答:


256

このパラメーターは、ツールチップに複雑なhtmlを使用するかどうかについてのみです。に設定して、タグの属性にtruehtmlをヒットしtitleます。

ここでこのフィドルを参照してください- タグdata-html="true"でhtml属性をtrueに設定<a>し、例としてhtmlアドホックに追加しました。


3
まあ彼らのドキュメントはその分野ではそれほど明確ではありません。この答えを共有してくれてありがとう!:)
sergserg

3
ブートストラップのドキュメントは悪名高くてゴミです:)物事を片付けることができてうれしいです!
ジョージウィルソン

6
フィドルの例は私にはうまくいきません。未加工のHTMLコードがまだ表示されます。
Sonson123 2013

3
おそらくあなたが疑うようなブートストラップコードへのいくつかの変更。関数属性で{html:true}を使用してすべてのツールチップをHTMLタイトルに配線する前に、2.2.2> 2.3.1から、要素にdata-html = "true"を追加し、 {html:true}の部分。私は本当に、彼らが最初からより頻繁に物事を正しくしようとし、リリース間で絶え間ない変更を加えないことを望んでいます。
Andrew Swihart 2013年

1
こちらをご覧ください:jsfiddle.net/44khF/148。また、デリゲートが使用されている場合は、初期化でhtml:trueを使用せず、data属性でのみ機能するようです。
ptutt 2013

34

通常どおり、次を使用しdata-original-titleます:

HTML:

<div rel='tooltip' data-original-title='<h1>big tooltip</h1>'>Visible text</div>

JavaScript:

$("[rel=tooltip]").tooltip({html:true});

htmlパラメータは、ツールチップテキストをDOM要素に変換する方法を指定します。デフォルトでは、HTMLコードはツールチップでエスケープされ、XSS攻撃を防ぎます。サイトにユーザー名を表示し、ツールチップに小さな略歴を表示するとします。HTMLコードがエスケープされておらず、ユーザーが自分で略歴を編集できる場合、悪意のあるコードを挿入する可能性があります。


5
data-original-titletitle存在する場合、ブートストラップが一時的に保存される場所です。data-title次のようなタイトルがない場合は十分です<a href="#" title="xxx">
davidkonrad

それは素晴らしくてシンプルです
Gayan

こんにちは@MattZeunert使用して完全に正常に実行しましたが、ページを再読み込みして動的に設定せずに、次のデータに従ってタイトルを更新したいので、タイトル内のコンテンツを変更します。
3つのルール

32

htmlをdata-titleに挿入しない別の解決策は、ツールチップのhtmlコンテンツを含む独立したdivを作成し、ツールチップを作成するときにこのdivを参照することです。

<!-- Tooltip link -->
<p><span class="tip" data-tip="my-tip">Hello world</span></p>

<!-- Tooltip content -->
<div id="my-tip" class="tip-content hidden">
    <h2>Tip title</h2>
    <p>This is my tip content</p>
</div>

<script type="text/javascript">
    $(document).ready(function () {
        // Tooltips
        $('.tip').each(function () {
            $(this).tooltip(
            {
                html: true,
                title: $('#' + $(this).data('tip')).html()
            });
        });
    });
</script>

このようにして、読み取り可能な複雑なhtmlコンテンツを作成し、必要な数のツールチップをアクティブ化できます。

codepenのライブデモ


素晴らしい。誰かが直接HTMLをdataプロパティに詰め込まないソリューションを提案してくれて本当に嬉しいです。
ミール

27

htmlデータ属性は、それがドキュメントにないと言うまさにません。この小さな例を試してください。JavaScriptは必要ありません(説明のために行に分けています)。

<span rel="tooltip" 
     data-toggle="tooltip" 
     data-html="true" 
     data-title="<table><tr><td style='color:red;'>complex</td><td>HTML</td></tr></table>"
>
hover over me to see HTML
</span>


JSFiddleデモ:


7

ツールチップにHTMLを含める場合は、「html」オプションをtrueに設定します。実際のHTMLはオプション「タイトル」によって決定されます(リンクのタイトル属性は設定しないでください)

$('#example1').tooltip({placement: 'bottom', title: '<p class="testtooltip">par</p>', html: true});

ライブサンプル

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