【问题标题】:Display links in side menu when main nav links are hovered当主导航链接悬停时,在侧边菜单中显示链接
【发布时间】:2016-12-28 03:47:14
【问题描述】:

我想在侧边菜单中显示链接,具体取决于悬停在顶部导航中的链接,并显示它们直到悬停另一个链接。这是我所拥有的:

HTML:

<ul class="nav navbar-nav">
  <li class="nav"><a class="toggle" href="#">LINK 1</a></li>
  <li class="nav"><a class="toggle" href="#">LINK 2</a></li>
  <li class="nav"><a class="toggle" href="#">LINK 3</a></li>
  <li class="nav"><a class="toggle" href="#">LINK 4</a></li>
  <li class="nav"><a class="toggle" href="#">LINK 5</a></li>
  <li class="nav"><a class="toggle" href="#">LINK 6</a></li>
</ul>

<div class="sideMenu">
    <div id="sideMenuLinks">
        <ul id="menuContent" class="menuContent collapse out">
          <li><a href="#">SM LINK 1</a></li>
          <li><a href="#">SM LINK 2</a></li>
          <li><a href="#">SM LINK 3</a></li>  
          <li><a href="#">SM LINK 4</a></li>
          <li><a href="#">SM LINK 5</a></li>
          <li><a href="#">SM LINK 6</a></li>
        </ul>
     </div>
</div>

jQuery:

$(document).ready(function() {
    $('.toggle').hover(function () {
        $('#sideMenuLinks').show('slow');
    });
});

这仅在悬停时显示,但显然仅适用于sideMenuLinks,我有更多不同 ID 的链接,所以如果我将鼠标悬停在“LINK 2”上,这些链接将被替换,依此类推。有意义吗?

谢谢!

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    我会向主导航链接添加一个data-* 属性,如下所示:

    <ul class="nav navbar-nav">
      <li class="nav"><a class="toggle" data-menu="first" href="#">LINK 1</a></li>
      <li class="nav"><a class="toggle" data-menu="second" href="#">LINK 2</a></li>
      <li class="nav"><a class="toggle" data-menu="third" href="#">LINK 3</a></li>
    </ul>
    
    <div class="sideMenu">
        <div id="sideMenuLinks">
            <ul id="first" class="menuContent collapse out">
              <li><a href="#">SM LINK 1</a></li>
              <li><a href="#">SM LINK 2</a></li>
            </ul>
            <ul id="second" class="menuContent collapse out">
              <li><a href="#">SM LINK 1</a></li>
              <li><a href="#">SM LINK 2</a></li>
            </ul>
            <ul id="third" class="menuContent collapse out">
              <li><a href="#">SM LINK 1</a></li>
              <li><a href="#">SM LINK 2</a></li>
            </ul>
         </div>
    </div>
    

    然后你可以在悬停时获得data-menu值:

    $(".toggle").hover(function() {
        $(".menuContent").each(function() {
            $(this).hide();
        });
        var menu = $(this).attr("data-menu");
        $('#' + menu).show('slow');
    });
    

    尚未对此进行测试,但这最终可能会使菜单更具动态性。

    【讨论】:

    • 更正了一个错误。
    • 感谢您的快速回复:-) 我还没有得到这个工作,但它是一个开始,当我弄清楚时我会更新。
    • 您找到解决方案了吗?我现在正在用一个工作示例更新答案...如果答案有用,请考虑投票:)
    • 我确实找到了解决方案,我只是来实际发布如果其他人需要它,但您的代码更简洁,所以我会更改它。非常感谢。我确实投了赞成票,但它还没有公开改变:-)
    【解决方案2】:

    如果我理解正确,您有几个 ID,您只想在相应的链接悬停在页面上的其他位置时显示这些 ID。

    所以,你能做的就是你所做的更多。想象一下你得到了这个 HTML:

    <ul class="nav navbar-nav">
        <li class="nav"><a class="toggle1" href="#">LINK 1</a></li>
        <li class="nav"><a class="toggle2" href="#">LINK 2</a></li>
        <li class="nav"><a class="toggle3" href="#">LINK 3</a></li>
    </ul>
    
    <div class="sideMenu">
        <div id="sideMenuLinks1">
            <ul id="menuContent" class="menuContent collapse out">
              <li><a href="#">SM LINK 1</a></li>
              <li><a href="#">SM LINK 2</a></li>
              <li><a href="#">SM LINK 3</a></li>  
              <li><a href="#">SM LINK 4</a></li>
              <li><a href="#">SM LINK 5</a></li>
              <li><a href="#">SM LINK 6</a></li>
            </ul>
        </div>
    <div id="sideMenuLinks2">
            <ul id="menuContent" class="menuContent collapse out">
              <li><a href="#">SM LINK 1</a></li>
              <li><a href="#">SM LINK 2</a></li>
              <li><a href="#">SM LINK 3</a></li>  
              <li><a href="#">SM LINK 4</a></li>
              <li><a href="#">SM LINK 5</a></li>
              <li><a href="#">SM LINK 6</a></li>
            </ul>
        </div>
    <div id="sideMenuLinks3">
            <ul id="menuContent" class="menuContent collapse out">
              <li><a href="#">SM LINK 1</a></li>
              <li><a href="#">SM LINK 2</a></li>
              <li><a href="#">SM LINK 3</a></li>  
              <li><a href="#">SM LINK 4</a></li>
              <li><a href="#">SM LINK 5</a></li>
              <li><a href="#">SM LINK 6</a></li>
            </ul>
        </div>
    </div>
    

    现在您可以使用一个简单的 for 循环和您已经获得的 jQuery 来实现它。 jQuery:

    $(document).ready(function() {
        for(i=0,i<3,i++){
            classname = '.toggle'+i;
            id = '#sideMenuLinks'+i;
            $(classname).hover(function () {
                 $(id).show('slow');
            });
        }
    });
    

    我没有对此进行测试,但它是一个简单、全面的解决方案。希望这对您有所帮助! .

    【讨论】:

    • 非常感谢,仍然没有工作,但我会看看我能做些什么。如果其他人需要,我确实必须在 for 循环中用分号替换逗号:'for(i=0;i
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多