首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我鼠标离开元素但鼠标进入弹出框时,我如何让弹出框隐藏起来?

当我鼠标离开元素但鼠标进入弹出框时,我如何让弹出框隐藏起来?
EN

Stack Overflow用户
提问于 2017-07-11 14:33:26
回答 1查看 853关注 0票数 0

这是弹出窗口的Html,用于在有人将鼠标悬停在配置文件缩略图上时显示用户配置文件的摘要。

代码语言:javascript
复制
                      <div class="user-avatar" style="background-image: url({{          $chat->from->small_avatar }}); " data-container="body" data-toggle="popover" data-placement="right" data-html="true" data-content="<div class='group-chat-popover'>
                      <div class='popover-header'>
                        <div class='chat-avatar' style='background-image:url({{ $chat->from->small_avatar }})'></div>
                        <div class='header-description'>
                          <p class='user-name'>{{ $chat->from->full_name }}</p>
                          <p class='user-bio'>{{ $chat->from->about }}</p>
                        </div>
                      </div>
                      <div class='user-activity'>
                        <div class='activity'>
                          <p class='activity-category'>Reputation</p>
                            <p class='activity-count'>{{ $chat->from->total_points }}</p></div>
                        <div class='activity'>
                          <p class='activity-category'>Submissions</p>
                            <p class='activity-count'>{{ $chat->from->approved_tutorials->count() }}</p></div>
                        <div class='activity'>
                          <p class='activity-category'>Upvotes</p>
                            <p class='activity-count'>{{ $chat->from->votes->count() }}</p></div>
                      </div>
                      <div class='popover-footer'>
                        <a href='{{ $chat->from->profile_link }}' class='btn btn-sm btn-select'>Open profile</a>
                        <a href='{{ $chat->from->chat_link }}' class='btn btn-sm btn-primary'>Private Chat</a>
                        </div>
                    </div>">
                    </div>

这是我用来触发和关闭弹出窗口的代码。另外,我在这里使用了bootstrap popovers。

代码语言:javascript
复制
            var timer;
            $(".user-avatar").popover({
                trigger: "manual",
                animation: false
            })
                .on("mouseenter", function(){
                var self = $(this);
                timer = setTimeout(function(){
                    self.popover("show");
                }, 1000);
            })
                .on("mouseleave", function () {
                clearTimeout(timer);

                $(".popover").on("mouseleave", function () {
                    $(this).popover('hide');
            });
                setTimeout(function () {
                    if (!$(".popover:hover").length) {
                        $(this).popover("hide");
                    }
                }, 30);
            });

问题是,当我用鼠标进入缩略图时,我无法隐藏弹出窗口,而是直接鼠标离开缩略图(没有鼠标离开弹出窗口)。

我想要以下行为:

当我用鼠标输入缩略图时弹出显示。当我用鼠标进入弹出框时,弹出框保持打开状态。当我用鼠标离开时,弹出隐藏。当我用鼠标离开缩略图时,弹出窗口隐藏(不转到弹出窗口)。

我不能达到最后一点!

EN

回答 1

Stack Overflow用户

发布于 2017-07-11 14:52:02

您可能应该在鼠标离开元素时设置一个计时器,并在鼠标进入弹出窗口时将其清除。如下所示:

代码语言:javascript
复制
        var timer;
        $(".user-avatar").popover({
            trigger: "manual",
            animation: false
        }).on("mouseenter", function(){
            $(this).popover("show");
        }).on("mouseleave", function () {
            var self = $(this);
            timer = setTimeout(function(){ // You may want to keep a reference to the time of each element.
                self.popover("hide");
            }, 1000);
        });

        $(".popover").on("mouseenter", function(){
            clearTimer(timer);
        }).on("mouseleave", function () {
            $(this).popover("hide"); // I'm not sure this will work, you may have to keep a reference to the element that owns this popover.
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45027000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档