当前位置: 首页 > 知识库问答 >
问题:

jQuery在悬停时显示当前元素

易祖鹤
2023-03-14

所以我使用这个代码来显示菜单中的深度3元素(wordpress):

var hoverTimeout;  

    $( "span.sub2 li.menu-item-has-children" ).hover(function(){
        hoverTimeout = setTimeout(function() {$('ul .sub2 li .sub-menu .sub2').css("display", "block");}, 500);
    }, function() {
        clearTimeout(hoverTimeout);
        $('ul .sub2 li .sub-menu .sub2').css("display", "none");
    });


    $( "span.sub2 li.menu-item-has-children" ).mouseleave(function() {
      $('ul .sub2 li .sub-menu .sub2').css("display", "none");
    });

问题是,当我悬停在一个带有子菜单的元素上时,所有带有子菜单的元素都会显示出来。

问题是:

如何只显示一个子菜单,我在我的鼠标悬停的时刻?

很抱歉添加了标记,无法添加“jquery”

编辑:

HTML:

<nav id="menu" class="menu-main-navigation-container"><ul id="menu-main-navigation" class=""><li id="menu-item-177" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-5 current_page_item menu-item-177"><a href="http://ekochem-tech.pl/">Strona główna</a></li>
<li id="menu-item-18" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-18"><a href="http://ekochem-tech.pl/o-firmie/">O firmie</a></li>
<li id="menu-item-19" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-19"><a href="http://ekochem-tech.pl/oferta/">Oferta</a><ul class="sub-menu"><span class="sub2">  <li id="menu-item-123" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-123"><a href="http://ekochem-tech.pl/oferta/sprzedaz-plynow-chlodniczych-i-wody-demineralizowanej/">Sprzedaż płynów chłodniczych i wody demineralizowanej</a><ul class="sub-menu"><span class="sub2">       <li id="menu-item-435" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-435"><a href="http://ekochem-tech.pl/producent-wody-demineralizowanej/">Producent wody demineralizowanej</a></li>
        <li id="menu-item-436" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-436"><a href="http://ekochem-tech.pl/plyny-instalacji-przemyslowych/">Płyny do instalacji przemysłowych i CO</a></li>
        <li id="menu-item-437" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-437"><a href="http://ekochem-tech.pl/inhibitory-korozji/">Inhibitory korozji</a></li>
</ul></span></li>
    <li id="menu-item-119" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-119"><a href="http://ekochem-tech.pl/oferta/analizy-badania-czystosci-i-stopnia-zuzycia-plynow-chlodniczych/">Analizy, badania czystości i stopnia zużycia płynów chłodniczych</a></li>
    <li id="menu-item-120" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-120"><a href="http://ekochem-tech.pl/oferta/napelnianie-i-oproznianie-instalacji-chlodniczych/">Napełnianie i opróżnianie instalacji chłodniczych</a></li>
    <li id="menu-item-121" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-121"><a href="http://ekochem-tech.pl/oferta/plukanie-chemiczne-czyszczenie-lub-trawienie-urzadzen-i-ciagow-technologicznych/">Płukanie, chemiczne czyszczenie lub trawienie urządzeń i ciągów technologicznych</a></li>
    <li id="menu-item-122" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-122"><a href="http://ekochem-tech.pl/oferta/plyny-niezamarzajace-do-domkow-letniskowych/">Płyny niezamarzające do domków letniskowych</a></li>
</ul></span></li>
<li id="menu-item-17" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17"><a href="http://ekochem-tech.pl/kontakt/">Kontakt</a></li>
</ul></nav> 

共有1个答案

蒙峰
2023-03-14

问题是像span li这样的选择器。菜单项将应用于每个li。span中的菜单项,与深度无关(它是一个后代选择器)。您应该使用子选择器只针对直接的子对象,如下span

编辑:根据问题更新以包括延迟。没有延迟,您可以完全使用CSS来完成这项工作。不过,为了让延迟发挥作用,使用JavaScript添加一个类来指示用户何时已经停留足够长的时间来触发显示并保持CSS中的显示效果,可能会更容易。

var timeout;

$('.menu-item').hover(function() {

  var element = $(this);

  timeout = setTimeout(function() {
    element.addClass('hovering');
  }, 200);

}, function() {

  clearTimeout(timeout);
  $(this).removeClass('hovering');

});
li.menu-item {
  cursor: pointer;
}

.sub-menu {
  display: none;
}

li.menu-item.hovering > ul {
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="menu-main-navigation">
  <li class="menu-item">Item 1</li>
  <li class="menu-item menu-item-has-children">
    Sub menu
    <ul class="sub-menu">
      <li class="menu-item menu-item-has-children">
        Sub-sub menu
        <ul class="sub-menu">
          <li>2 Level Nested</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

 类似资料:
  • 我正在尝试制作一个不需要任何第三方代码工具提示。我想在jQuery&CSS中实现。它需要支持新行,并且只在悬停在输入元素上时显示。 我不想在HTML页面中添加额外的代码,或者在可能的情况下在输入字段中添加一个标题。 我已经创建了一个对象,其中包括要显示的文本,活动对象还将包含其他值。 当我悬停在输入上时,我想要一个div来显示来自对象的文本。到目前为止,我已经使悬停工作,但我不知道如何做div和显

  • 我有一个应用程序,我想在

  • 我是一个用cucumber和水豚配食的新手。我需要在使用capybara将鼠标悬停在网页的某些元素上后单击显示的链接 例如att.com 1、场景悬停在个人点击att.com上 悬停在商店上方的另一个场景——捆绑包——点击热门捆绑包 如何使用水豚的悬停和点击方法实现这一点,或者是否有其他方法可以实现这一点。 尝试的选项是 但它抱怨找不到xpath

  • 这是我的代码: null null 目前,动画似乎暂停悬停,但如果你取消悬停,你可以看到总是突然显示下一个div。所以它并不是真正的“暂停”,它只是停止然后显示下一个div。持续时间丢失。 怎么可能修复呢? 会非常感谢你的帮助!

  • 如果孩子在焦点中(已被点击),我怎么能失去父母的悬停状态?我有一个菜单箭头(用OPEN代替了它,以减少代码),它在悬停状态下打开我的菜单和菜单项,当我单击它们时,菜单项就会聚焦。在菜单项点击后,我希望能够失去对我父母的关注,这样菜单就会消失。 如果可能的话,我会尽量避免使用javascript,这是我最好的尝试... 这是我的html null null 编辑 我在一个单页应用程序上使用Angul

  • 问题内容: 我将鼠标悬停在图像上时要显示说明。我已经以一种不太理想的方式做到了这一点,在这里使用了图像精灵和鼠标悬停:我希望它看起来像我的样子,但是使用真实文本而不是图像。 我尝试了几种不同的方法,但似乎无法弄清楚该怎么做。我正在尝试仅使用HTML和CSS进行操作,但不确定是否可行。 请随意在我的代码中四处浏览,我将粘贴我认为与之相关的内容。 HTML 这很简单。将图片和“出现在悬停时”说明包装在