【问题标题】:List items show / hide different and separate div with jQuery列表项使用 jQuery 显示/隐藏不同且单独的 div
【发布时间】:2018-01-12 11:28:10
【问题描述】:


从问题中可以看出,我对 jQuery 和这种类型的编码不太擅长。
我正在构建一个 megamenu,其中一个菜单项应该显示一个 div,如下图所示:https://pasteboard.co/H2zzoDs.jpg
正如您在我的小提琴 https://codepen.io/byte37/pen/YYLmNq 中看到的那样,我无法显示我悬停的 li 元素的相应 Div。
我想要实现的是,当我悬停其中一个列表元素 (li) 时,我想显示相应的 Div。

<div class="cbi-main-menu">
    <div class="row">
        <div class="col-md-3">
            <div class="cbi-menu-sidebar">
              <h3 class="menu-item-prime">Menu</h3>
        <ul id="menu-left" class="no-style">
          <li><a id="lnk1" href="#" class="menu-item-1" >Link 1</a></li>
              <li><a id="lnk2" href="#" class="menu-item-2">Link 2</a></li>
              <li><a id="lnk3" href="#" class="menu-item-3">Link 3</a></li>
          <li><a id="lnk4" href="#" class="menu-item-4">Link 4</a></li>
          <li><a id="lnk5" href="#" class="menu-item-5">Link 5</a></li>
          <li><a id="lnk6" href="#" class="menu-item-6">Link 6</a></li>
          <li><a id="lnk7" href="#" class="menu-item-7">Link 7</a></li>
          <li><a id="lnk8" href="#" class="menu-item-8">Link 8</a></li>
          <li><a id="lnk9" href="#" class="menu-item-9">Link 9</a></li>
          <li><a id="lnk10" href="#" class="menu-item-10">Link 10</a></li>
          </ul>
            </div>
        </div>
        <div class="col-md-9">
            <div class="link-show container-menu" id="item-1"><img src="http://via.placeholder.com/350x150" id="item-1">Link1</div>
            <div class="link-show container-menu"><img src="http://via.placeholder.com/350x150" id="item-2">Link2</div>
            <div class="link-show container-menu"><img src="http://via.placeholder.com/350x150" id="item-3">Link3</div>
      <div class="link-show container-menu"><img src="http://via.placeholder.com/350x150" id="item-4">Link4</div>
            <div class="link-show container-menu"><img src="http://via.placeholder.com/350x150" id="item-5">Link5</div>
            <div class="link-show container-menu"><img src="http://via.placeholder.com/350x150" id="item-6">Link6</div>
      <div class="link-show container-menu"><img src="http://via.placeholder.com/350x150" id="item-7">Link7</div>
            <div class="link-show container-menu"><img src="http://via.placeholder.com/350x150" id="item-8">Link8</div>
            <div class="link-show container-menu"><img src="http://via.placeholder.com/350x150" id="item-9">Link9</div>
      <div class="link-show container-menu"><img src="http://via.placeholder.com/350x150" id="item-10">Link10</div>
        </div>
    </div>
</div>


JS:

$('#menu-left li').hover(
        function() {
             $(this).closest('.container-menu').find('.link-show').show();
        },
        function() {
              $(this).closest('.container-menu').find('.link-show').hide();
    });  

额外问题:由于我要显示/隐藏的div的内容主要是由图片组成的,有没有办法只在

  • 元素上悬停时加载内容?而不是仅在将鼠标悬停在
  • 上时才加载所有内容并显示内容?
    谢谢!
  • 【问题讨论】:

    • 每个帖子一个问题,请。

    标签: javascript jquery html css megamenu


    【解决方案1】:

    您可以为每个 li 元素添加一个 data-menu,其中包含您要显示的菜单的 id,如下所示:

    &lt;li data-menu="item-1"&gt;&lt;a id="lnk1" href="#" class="menu-item-1" &gt;Link 1&lt;/a&gt;&lt;/li&gt;

    然后你应该为你想要显示的 div 添加一个 id 属性,就像你已经为第一个所做的那样:

    <div class="link-show container-menu" id="item-1">
        <img src="http://via.placeholder.com/350x150" id="item-1">Link1
    </div>

    以这种方式链接这两个项目,您可以有一个简单的处理程序来悬停 li 元素,例如:

    $('#menu-left li').hover(
      function() {
        $("#" + $(this).data("menu")).show();
      },
      function() {
        $("#" + $(this).data("menu")).hide();
      }
    );

    【讨论】:

    • 嘿,谢谢你的回答,我试过了,但我不能让它工作:codepen.io/byte37/pen/JMZPyJ,我认为这是因为你写的 js 代码,行 $("#" + $(this).data("menu")).show(); ,而不是“菜单”,我应该使用哪个选择器?谢谢
    • 为了让它工作,我必须将 jquery 添加到你的 codepen。试试看吧。
    • 谢谢,但我已经添加了它,但它仍然无法正常工作。我做错了吗?
    • 嗯,你看到这支笔工作了吗? codepen.io/ciamiz/pen/VydLPr
    • Jezz,谢谢,现在我看到它工作了。奇怪它不在我的身上。无论如何,只是想知道, data("menu") 那个菜单是什么,它从哪里来的?感谢您的耐心等待。
    猜你喜欢
    • 2016-03-21
    • 1970-01-01
    • 2013-03-03
    • 2016-09-16
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多