Programing

클릭 대신 부트 스트랩 팝 오버가 호버에서 나타나거나 사라지도록하십시오.

crosscheck 2020. 5. 22. 23:41
반응형

클릭 대신 부트 스트랩 팝 오버가 호버에서 나타나거나 사라지도록하십시오.


Bootstrap의 Popover 로 웹 사이트를 구축 중이며 클릭 대신 팝 오버가 호버에 표시되는 방법을 알 수 없습니다.

내가하고 싶은 것은 누군가 링크를 클릭하는 대신 링크 위로 마우스를 가져 가면 팝 오버가 나타나고 이동하면 팝 오버가 사라지게하는 것입니다. 설명서에는 data 속성 또는 jquery를 사용할 수 있다고 나와 있습니다. 여러 팝 오버가 있기 때문에 jquery로 훨씬 더하고 싶습니다.


설정 trigger에 팝 오버의 옵션 hover대신 click은 IS, 기본 하나를.

data-*마크 업의 속성 중 하나를 사용하여 수행 할 수 있습니다 .

<a id="popover" data-trigger="hover">Popover</a>

또는 초기화 옵션으로 :

$("#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();

http://getbootstrap.com/javascript/#tooltips


이러한 답변 중 몇 가지를 시도하고 여러 링크로 확장이 잘 안되는 것을 발견 한 후 (예 : 허용되는 답변에는 모든 링크에 대해 jquery 줄이 필요함) 작업을 수행하는 데 최소한의 코드가 필요한 방법을 발견했습니다. 적어도 Chrome에서는 완벽하게 작동하는 것으로 보입니다.

이 줄을 추가하여 활성화하십시오.

$('[data-toggle="popover"]').popover();

그리고이 설정은 앵커 링크에 연결됩니다.

data-toggle="popover" data-trigger="hover"

See it in action here, I'm using the same imports as the accepted answer so it should work fine on older projects.

참고URL : https://stackoverflow.com/questions/12343695/make-bootstrap-popover-appear-disappear-on-hover-instead-of-click

반응형