【问题标题】:jQuery - Keep another element opened after mouseenterjQuery - 在 mouseenter 后保持另一个元素打开
【发布时间】:2017-11-20 12:07:11
【问题描述】:

如何防止 div 在鼠标悬停后停留?例如,我将鼠标悬停在一个 div 上,然后出现另一个。当我试图将鼠标悬停在刚刚被揭露的那个上时,它消失了,因为我不是“.mouseenter-ing”,原来的 div。

这是我的代码:

    $(document).ready(function() {
        $(".panel").hide();
        $("body").fadeIn(1800);
        $(".starter").mouseover(function() {
            $(".panel").slideDown(600);
        });
        $(".starter").mouseleave(function() {
         $(".panel").slideUp(600);
            $(".panel").mouseenter(function() { 
                $(".panel").show();
      });
     });
    });

【问题讨论】:

  • 也发布您的 html

标签: javascript jquery mouseenter mouseleave


【解决方案1】:

假设您想要以下内容:

  • 将鼠标悬停在 .starter 上
  • slideDown .panel
  • 仅当您将鼠标移出 .panel 时,才会上滑 .panel

当您将鼠标移出 .starter 时,您正在隐藏 .panel,请尝试这样的操作,而不是从第 7 行开始:

$(".panel").mouseleave(function() {
  $(".panel").slideUp(600);

如果您想确保 .panel 在离开 .starter 时关闭,您可以使用计时器来确保如果在指定时间内没有将鼠标悬停在 .panel 上,它最终会关闭。在这种情况下,1 秒:

$(".starter").mouseleave(function() {
  $(".panel").data('mouseLeaveTimeout', setTimeout(function() {
    $(".panel").slideUp(600);
  },1000));
});

$(".panel").mouseover(function() {
  clearTimeout($(this).data("mouseLeaveTimeout"));
});

查看this codepen 了解我认为您想要的示例。

【讨论】:

  • 是的,这几乎正是我想要的。唯一的问题是,现在,如果我的鼠标离开 .starter 而不接触 .panel,.panel 会停留在那里。
  • 抱歉,回复晚了,@ookadoo。我做了一个新代码,但我想知道你是否可以在悬停时保持 div 打开。 #dropdown & .something<div>s。当我将鼠标悬停在#dropdown 上时,它会隐藏起来。每当我退出.something 时,整个菜单都会关闭。我会 PM 你的代码什么的。
  • ` $(document).ready(function() { $("#dropdown").hide(); $(".something").hover(function() { $("#下拉").slideToggle(); }); }); `
  • 您的新代码有不同的标识符,我不清楚它与这个特定问题有何关系。我添加了一个 codepen 链接,显示了我提供的代码是如何工作的。如果它符合您的原始问题,您可以检查并标记我的答案吗?如果您有要解决的新问题,请添加新问题。
猜你喜欢
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 2012-04-05
相关资源
最近更新 更多