ブートストラップのポップオーバーを使用してウェブサイトを構築していますが、ポップオーバーをクリックではなくホバーに表示する方法を理解できません。
私がやりたいのは、誰かがリンクをクリックする代わりにリンクの上にカーソルを置いたときにポップオーバーを表示させ、離れるとポップオーバーが消えるようにすることです。ドキュメントには、data属性またはjqueryのいずれかを使用して可能であると記載されています。複数のポップオーバーがあるので、jqueryを使用するほうがはるかに便利です。
ブートストラップのポップオーバーを使用してウェブサイトを構築していますが、ポップオーバーをクリックではなくホバーに表示する方法を理解できません。
私がやりたいのは、誰かがリンクをクリックする代わりにリンクの上にカーソルを置いたときにポップオーバーを表示させ、離れるとポップオーバーが消えるようにすることです。ドキュメントには、data属性またはjqueryのいずれかを使用して可能であると記載されています。複数のポップオーバーがあるので、jqueryを使用するほうがはるかに便利です。
回答:
trigger
ポップオーバーのオプションを、デフォルトののhover
代わりにclick
に設定します。
これはdata-*
、マークアップのいずれかの属性を使用して実行できます。
<a id="popover" data-trigger="hover">Popover</a>
または初期化オプションを使用して:
$("#popover").popover({ trigger: "hover" });
これがデモです。
<script> $(function () { $("#popover").popover(); }); </script>
$("#popover").popover({ trigger: "hover" });
ます。
アクセシビリティのために追加したいのですが、フォーカストリガーを追加する必要があると思います:
すなわち $("#popover").popover({ trigger: "hover focus" });
ポップオーバー自体もホバーしたい場合は、手動トリガーを使用する必要があります。
これは私が思いついたものです:
function enableThumbPopover() {
var counter;
$('.thumbcontainer').popover({
trigger: 'manual',
animation: false,
html: true,
title: function () {
return $(this).parent().find('.thumbPopover > .title').html();
},
content: function () {
return $(this).parent().find('.thumbPopover > .body').html();
},
container: 'body',
placement: 'auto'
}).on("mouseenter",function () {
var _this = this; // thumbcontainer
console.log('thumbcontainer mouseenter')
// clear the counter
clearTimeout(counter);
// Close all other Popovers
$('.thumbcontainer').not(_this).popover('hide');
// start new timeout to show popover
counter = setTimeout(function(){
if($(_this).is(':hover'))
{
$(_this).popover("show");
}
$(".popover").on("mouseleave", function () {
$('.thumbcontainer').popover('hide');
});
}, 400);
}).on("mouseleave", function () {
var _this = this;
setTimeout(function () {
if (!$(".popover:hover").length) {
if(!$(_this).is(':hover')) // change $(this) to $(_this)
{
$(_this).popover('hide');
}
}
}, 200);
});
}
あなたが説明した機能は、Bootstrapツールチップを使用して簡単に実現できます。
<button id="example1" data-toggle="tooltip">Tooltip on left</button>
次に、要素のtooltip()関数を呼び出します。
$('#example1').tooltip();
これらの回答のいくつかを試してみて、複数のリンクでうまくスケーリングしないことがわかった後(たとえば、承認された回答には、リンクごとにjqueryの行が必要です)、最小限のコードで機能する方法に出会いました。また、少なくともChromeでは完全に機能するようです。
次の行を追加してアクティブにします。
$('[data-toggle="popover"]').popover();
そして、あなたのアンカーリンクへのこれらの設定:
data-toggle="popover" data-trigger="hover"
ここで実際にそれを見てください、私は受け入れられた回答と同じインポートを使用しているので、古いプロジェクトでうまく機能するはずです。