当主要导航链接悬停时,在侧边菜单中显示链接

时间:2016-05-01 17:19:02

标签: javascript jquery html css

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

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中有更多链接,所以如果我徘徊在&#34; LINK 2&#34;这些链接将被替换等等。有意义吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我会在主导航链接中添加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');
});

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

答案 1 :(得分:0)

如果我理解正确,你有几个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');
        });
    }
});

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