简体   繁体   English

列表项使用jQuery显示/隐藏不同且分开的div

[英]List items show / hide different and separate div with jQuery


as you can see from the question i'm not very good with jQuery and this type of coding. 从问题中可以看出,我对jQuery和这种类型的编码不是很好。
I'm building a megamenu and one of the menu items should show a div like this picture: https://pasteboard.co/H2zzoDs.jpg 我正在构建一个megamenu,菜单项之一应显示如下图所示的div: https ://pasteboard.co/H2zzoDs.jpg
As you can see in my fiddle https://codepen.io/byte37/pen/YYLmNq , i'm not able to show the corresponding Div of the li element i'm hovering on. 正如您在我的小提琴https://codepen.io/byte37/pen/YYLmNq中所看到的那样,我无法显示悬停在li元素上的相应Div。
What i'm trying to achieve is that when I hover one of the list elements (li) i want to show the the corresponding 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: JS:

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

Extra question: since the content of the div i want show / hide, is mainly made by pictures, is there a way to load the content only when hovering on < li > element? 额外的问题:由于我要显示/隐藏的div的内容主要是由图片制成的,是否只有在<li>元素上悬停时才可以加载内容? Instead of loading everything and showing the contents only when hovering over the < li >'s? 而不是仅将鼠标悬停在<li>上时加载所有内容并显示内容?
Thanks! 谢谢!

You can add a data-menu for each li element which contains the id of the menu you want to show, something like this: 您可以为每个li元素添加一个数据菜单,其中包含要显示的菜单的ID,如下所示:

 <li data-menu="item-1"><a id="lnk1" href="#" class="menu-item-1" >Link 1</a></li> 

Then you should add an id attribute to the div you want to show, like you already did for the first one: 然后,您应该向要显示的div添加一个id属性,就像您对第一个属性所做的一样:

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

Linking the two items this way, you can have a simple handler for hovering the li element, like: 通过这种方式链接两个项目,您可以拥有一个简单的处理程序来悬停li元素,例如:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM