私はbootstrap 3 popoverを使用します。
そして今、私はテキストpopvoverのリンクが欲しい。
コード:
<a href="#"
role="button"
class="btn popovers"
data-toggle="popover"
title=""
data-content="test content <a href="" title="test add link">link on content</a>"
data-original-title="test title"
>
test link
</a>
ただし、htmlでコードを開始すると、次のように表示されます:
<a href="#" role="button" class="btn popovers" data-toggle="popover" title="" data-content="test content <a href=" "="">link on content</a>
"
data-original-title="test title"
>
test link
シンボル"
しかし、リンクにリンクを追加したかどうかはわかりません...
適切なコードになる方法を教えてください
追記:質問が既に存在する場合、リンクをお願いします。
次のようにポップオーバーを初期化するときに、html
オプションに値true
を渡す必要があります。
JS:
$("[data-toggle=popover]")
.popover({html:true})
HTML:
<a href="#" role="button" class="btn popovers" data-toggle="popover" title="" data-content="test content <a href='' title='test add link'>link on content</a>" data-original-title="test title">test link</a>
属性data-html = "true"を使用するだけです。
<button
data-toggle="popover"
data-content="Link: <a href='xyz.com'>XYZ</a>"
data-html="true">
CLICK
</button>
data-trigger="focus"
を使用しましたが、ポップオーバーのコンテンツのリンクに問題がありました。リンク上でマウスボタンをクリックしてしばらく保持すると、ポップオーバーが消えてリンクが「機能しなくなります」。一部のクライアントはそれについて文句を言いました。問題を再現できます こちら 。
次の code を使用して問題を修正しました。
data-trigger="manual"
htmlおよび
$("[data-toggle=popover]")
.popover({ html: true})
.on("focus", function () {
$(this).popover("show");
}).on("focusout", function () {
var _this = this;
if (!$(".popover:hover").length) {
$(this).popover("hide");
}
else {
$('.popover').mouseleave(function() {
$(_this).popover("hide");
$(this).off('mouseleave');
});
}
});
<a href="#" class="btn popovers" data-toggle="popover" title="" data-content="test content <a href='' title='test add link'>link on content</a>" data-html="true"><i class="glyphicon glyphicon-info-sign"></i></a>
Data-html = "true"を追加するだけで、リンク属性が機能します:)
フォーカスandポップアップ内のリンクを使用する場合は、内部をクリックしたときにポップアップが閉じないようにする必要があります。私が見つけた最もきれいな解決策は、preventDefault
Popup内の.popover
クラス
$('body')
.on('mousedown', '.popover', function(e) {
e.preventDefault()
});
});
与えられた答えが正しい一方で、リンクがdata-trigger="focus"
が適用されます。私が見つけたようにクライアントからポップオーバーでクリックがすばやく発生すると、ユーザーがマウスボタンを押したままにすると、残念ながらトリガーが作動してポップオーバーが発生し、リンクが実行されます。要するに、リンクが必要かどうかを考慮し、スロウクリックを計画します。
$("body").on("mousedown",".my-popover-content a",function(e){
document.location = e.target.href;
});
私のためにそれをします:基本的に、あなた自身の手に問題を取ります。繰り返しますが、これはポップオーバーオプションhtml: true
、sanitize: false
、およびtrigger : "focus"