【问题标题】:Same Page SubNav on multiple pages website多个页面网站上的相同页面子导航
【发布时间】:2011-11-16 15:56:03
【问题描述】:

我正在尝试更改包含在子菜单的<li> 中的锚的 css。这是 HTML:

<ul id="nav">
   <li class="subnav current"><a href="page1.html">Page1</a>
      <ul>
         <li><a href="page1.html#section1a">Page 1 Section A</a></li>
         <li><a href="page1.html#section1b">Page 1 Section B</a></li>
         <li><a href="page1.html#section1c">Page 1 Section C</a></li>
      </ul>
   </li>
   <li class="subnav"><a href="page2.html">Page2</a>
      <ul>
         <li><a href="page2.html#section2a">Page 2 Section A</a></li>
         <li><a href="page2.html#section2b">Page 2 Section B</a></li>
         <li><a href="page2.html#section2c">Page 2 Section C</a></li>
     </ul>
   </li>
<ul>

每个部分都有一个 1060px 的宽度,一个左浮动,所有的部分都包含在一个隐藏溢出的 div 容器中。 这是我尝试过的脚本:

$(document).ready(function() {
   var P=($(".section").position().left)*-1
   var N=(P/1060)+1
   $("#nav li.current ul li:first-child").find("a").css("color","#e53f33");
   $("#nav li.current ul li:nth-child(N)").click(function(){
      $(this).siblings().find("a").css("color","#777777");
      $(this).find("a").css("color","#e53f33");
   });
});

当我停留在同一页面时,此脚本工作正常。但是,即,当我在第 1 页并单击位于第 2 页中的链接时,即使我单击了另一个孩子,第一个孩子的 css 也会更改。我的错在哪里?

你可以在这里看到发生了什么http://www.theworkingowl.com

【问题讨论】:

    标签: jquery css navigation anchor submenu


    【解决方案1】:

    首先,为什么不将点击事件放在锚点上?此外,第 n 个子方法不是您想要的。您是否考虑过应用/删除类?

    $(document).ready(function() {
       // take care of direct hash links...
       var relative_url = window.location.href.substr(window.location.protocol.length+window.location.hostname.length+3);
       $('a[href="'+relative_url+'"]').addClass('current').parent().siblings().find('a').css('color', '#777');
    
       // take care of clicks that stay on this page...
       $('#nav a').click(function() {
         $(this).parent().addClass('current').siblings().removeClass('current');
       });
    });
    

    然后你的 CSS...

    #nav a { color:#777777; }
    #nav li.current a { color:#e53f33; }
    

    【讨论】:

    • 您好,Landons,非常感谢您的回答。当您停留在同一页面时,添加或删除一个类确实是一个很好的解决方案。但是当你点击另一个页面中的链接时,即第 2B 节,该节的链接锚不会被添加一个类(因为你没有点击这个新页面中的任何链接)。
    • 都是静态html,还是用服务器端脚本生成?如果它是静态的,请尝试添加: $(function() { $('a[href="'+window.location.pathname+'"]').parents('li').addClass('current'); } );到页面底部...
    • 都是静态html;我尝试了你的建议,但它不起作用,我不明白为什么。我也试过这个:var url = window.location.href; if (url.search("#section1b")&gt;0){$("#nav li a[href*=#section1b]").addClass("current");} 但它也不起作用......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多