1. ホーム
  2. jquery

[解決済み] Bootstrapのポップオーバーをホバーされたままにしておくにはどうしたらいいですか?

2022-07-11 03:11:58

質問

Bootstrapのポップオーバーを使って、ユーザー情報を表示するホバーカードを作成し、ボタンのマウスオーバーでそれをトリガーしています。私は、ポップオーバー自体がホバーされている間、このポップオーバーを生き続けたいのですが、ユーザーがボタンの上にホバーするのを止めるとすぐに消えてしまいます。どうすればよいのでしょうか?

$('#example').popover({
    html : true,
    trigger : 'manual',
    content : function() {
        return '<div class="box">Popover</div>';
    }
});

$(document).on('mouseover', '#example', function(){
    $('#example').popover('show');
});

$(document).on('mouseleave', '#example', function(){
    $('#example').popover('hide');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.js"></script>
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>

<a href="#" id="example" class="btn btn-danger" rel="popover" >hover for popover</a>

どのように解決するのですか?

私はこれの別の解決策の後に来た...以下はコードです。

    $('.selector').popover({
        html: true,
        trigger: 'manual',
        container: $(this).attr('id'),
        placement: 'top',
        content: function () {
            $return = '<div class="hover-hovercard"></div>';
        }
    }).on("mouseenter", function () {
        var _this = this;
        $(this).popover("show");
        $(this).siblings(".popover").on("mouseleave", function () {
            $(_this).popover('hide');
        });
    }).on("mouseleave", function () {
        var _this = this;
        setTimeout(function () {
            if (!$(".popover:hover").length) {
                $(_this).popover("hide")
            }
        }, 100);
    });