【问题标题】:How to remove icons from outer div on inner div hover?如何在内部 div 悬停时从外部 div 中删除图标?
【发布时间】:2021-11-24 07:57:09
【问题描述】:

有两个 div,两个 div 的角落都有一个图标来编辑它们的属性。我希望在任何特定时间只出现一个图标。当悬停在外部 div 上时,图标显示在外部 div 角落。当悬停在内部 div 上时,图标框会显示在两个 div 中。将鼠标悬停在内部 div 上时,如何抑制外部 div 图标框。 这是我的代码

$(".icons").parent().hover(function() { // Mouse over
  $(this).find('.icons').first().css('display', 'block');
}, function() { // Mouse out
    $(this).find('.icons').first().css('display', 'none');
});
    .outer{
        width: 500px;
        height: 200px;
        background-color: fuchsia;
        display: flex;
        align-items: center;
        justify-content: center;
        position: relative;
    }
    .inner{
        width: 300px;
        height: 100px;
        background-color: #2c132c;
        position: relative;
    }
    .icons{
        content: '^';
        size: 22px;
        background-color: gold;
        color: honeydew;
        width: 20px;
        height: 15px;
        position: absolute;
        top: 0;
        left: 0;
        display: none;
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div class="outer">    
    <div class="icons"></div>
    <div class="inner">
        <div class="icons"></div>
    </div>
</div>

我只想一次只显示一个图标框。因此,当在内部 div 中时,我不想显示外部 div 中的图标。

【问题讨论】:

    标签: javascript jquery css hover


    【解决方案1】:

    我使用 mouseenter 和 mouseleave 使它更灵活 通过在您进入 Div 时使其处于活动状态 当您离开 Div 时,他的父母将处于活动状态

     $(".show-icons").mouseenter(function (e) { // Mouse over
        $(".icons").hide();
        $(this).find('.icons').first().show();
      });
      $(".show-icons").mouseleave(function (e) { // Mouse over
        $(".icons").hide();
        $(this).parents(".show-icons").first().find('.icons').first().show()
      });
    .outer {
        width: 500px;
        height: 200px;
        background-color: fuchsia;
        display: flex;
        align-items: center;
        justify-content: center;
        position: relative;
      }
    
      .inner {
        width: 300px;
        height: 100px;
        background-color: #2c132c;
        position: relative;
        display: flex;
        align-items: center;
        justify-content: center;
      }
    
      .inner-2 {
        width: 100px;
        height: 50px;
        background-color: #ccc;
        position: relative;
      }
    
      .icons {
        content: '^';
        size: 22px;
        background-color: gold;
        color: honeydew;
        width: 20px;
        height: 15px;
        position: absolute;
        top: 0;
        left: 0;
        display: none;
      }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    
      <div class="outer show-icons">
        <div class="icons"></div>
        <div class="inner show-icons">
          <div class="icons"></div>
          <div class="inner-2 show-icons">
            <div class="icons"></div>
          </div>
        </div>
      </div>

    【讨论】:

      【解决方案2】:

      我能想到实现这一点的唯一方法是在 JS 中单独检查,如果鼠标悬停在内部 div 上,则只显示外部 div 图标:无,但是,我不太确定这是怎么做到的将被实现,因为我到目前为止没有使用 jquery,也没有研究 hover() 函数。

      你可以让它像,如果鼠标悬停在外部 div 上,然后显示它的外部图标,如果它也将鼠标悬停在内部 div 上,那么你可以将外部图标显示设置为无和内部图标显示块。我相信你可能需要事件监听器。

      【讨论】:

        【解决方案3】:

        因为内部 div 完全包含在外部 div 中,您可以只监听外部 div 上的鼠标移动(over/out),选择目标元素是什么并设置/取消设置其图标以显示块/无.

          const outer = document.querySelector('.outer');
          outer.addEventListener('mouseover', function (e) {
            e.target.querySelector('.icons').style.display = 'block';
          });
          outer.addEventListener('mouseout', function (e) {
            e.target.querySelector('.icons').style.display = 'none';
          });
                .outer{
                    width: 500px;
                    height: 200px;
                    background-color: fuchsia;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    position: relative;
                }
                .inner{
                    width: 300px;
                    height: 100px;
                    background-color: #2c132c;
                    position: relative;
                }
                .icons{
                    content: '^';
                    size: 22px;
                    background-color: gold;
                    color: honeydew;
                    width: 20px;
                    height: 15px;
                    position: absolute;
                    top: 0;
                    left: 0;
                    display: none;
                }
            <div class="outer">    
                <div class="icons"></div>
                <div class="inner">
                    <div class="icons"></div>
                </div>
            </div>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-12-16
          • 2019-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-16
          相关资源
          最近更新 更多