2014-02-22 48 views
-1

我有以下菜单,我想根据url设置一个当前类,但它不工作,有谁知道为什么甚至更好的方式来实现这一点,谢谢: HTML -CSS当前类没有被删除

<ul class="dropdown"> 
         <li><a id="home" href="/">Home</a></li> 
         <li> 
          <a id="hospitals" href="/hca-hospitals">HCA Hospitals</a> 
          <ul class="sub_menu"> 
           <li id="one"><a href="/hca-hospitals/hospitals-and-outpatients">Hospitals and Outpatients</a></li> 
           <li id="two"><a href="/hca-hospitals/treatments">Treatments</a></li> 
          </ul> 
         </li> 
         <li> 
          <a id="benefits" href="/platinum-choice-benefits">Platinum Choice Benefits</a> 
          <ul class="sub_menu"> 
           <li id="one"><a href="/platinum-choice-benefits/download-voucher">Download Voucher</a></li> 
           <li id="two"><a href="/platinum-choice-benefits/where-you-can-go">Where you can go</a></li> 
          </ul> 
         </li> 
         <li> 
          <a id="find" href="/find-a-hca-consultant">Find a Consultant</a> 
         </li> 
         <li> 
          <a id="contact" href="/contact-hca">Contact</a> 
         </li> 
    </ul> 

CSS -

ul.dropdown li a.current { color: #66c2c0;} 

JQuery的 -

var pathname = $(location).attr('href'); 

     if (pathname = "/contact-hca") { 
      $("ul.dropdown li a#contact").addClass("current"); 
      $("ul.dropdown li a#find").removeClass("current"); 
     } 
     if (pathname = "/find-a-hca-consultant") { 
      $("ul.dropdown li a#find").addClass("current"); 
      $("ul.dropdown li a#contact").removeClass("current"); 
     } 
+8

使用'=='而不是'=' – Satpal

+0

'ipathname =“/ contact-hca”'这将永远是真实的,因为您使用setter而不是比较。请参阅上面的@Satpal注释 – Ohgodwhy

+0

此外'id'是唯一的,您需要使用'class'来代替您的列表项目。 – Felix

回答

4

有啊重新使用=而不是===,其实际分配pathname,而不是比较它。解决这个问题。

if (pathname === "/contact-hca") { 
    $("ul.dropdown li a#contact").addClass("current"); 
    $("ul.dropdown li a#find").removeClass("current"); 
} else if (pathname === "/find-a-hca-consultant") { 
    $("ul.dropdown li a#find").addClass("current"); 
    $("ul.dropdown li a#contact").removeClass("current"); 
} 
+0

这对我有用,因为我也有子页面 - var pathname = window.location.pathname; (pathname.indexOf(“find-a-hca-consultant”)> 0){ $(“ul.dropdown li a#find”)。addClass(“current”); (“contact-hca”)> 0){ } } else if(pathname.indexOf(“contact-hca”)> 0){(“ul.dropdown li a#contact”)。addClass(“current”); } –

+0

太棒了!很高兴它的工作。 – dthree

3

在代码中,你使用if (pathname = "/contact-hca"),这是不对的,因为=代表赋值,并要比较值,这是=====的平等。我会建议你使用后者,因为它的速度更快,它的字面比较,它的作品更加坚固,例如:

5 == '5' // true 
5 === '5' // false 

所以,你应该有以下修改代码:此外

var pathname = $(location).attr('href'); 

if (pathname === "/contact-hca") { 
    $("ul.dropdown li a#contact").addClass("current"); 
    $("ul.dropdown li a#find").removeClass("current"); 
} 
if (pathname === "/find-a-hca-consultant") { 
    $("ul.dropdown li a#find").addClass("current"); 
    $("ul.dropdown li a#contact").removeClass("current"); 
} 

,我建议您学习如何使用开发人员控制台(每个浏览器都有自己的),这将帮助您确定代码中的问题和问题。

+0

感谢球员,但我无法让这个工作,一定有别的地方的另一个问题。 –

+0

我无法得到这个工作,因为路径名返回完整的url,而不仅仅是域后的位,谢谢everones的大力帮助! –

+0

谢谢maremp开发者控制台是一个祝福,我没有使用足够的:-) –