【问题标题】:How to addClass() to list item based on current URL如何 addClass() 根据当前 URL 列出项目
【发布时间】:2015-07-19 16:50:58
【问题描述】:

我的网站目前有一个非常酷的导航栏,但我希望让它变得更好。这是我的问题:

谁能帮我修复我的 JS 脚本,以便根据当前的 url,我菜单中的列表项将具有“活动”类,并且所有其他具有不同 URL 的列表项将保持其默认的非活动类?

到目前为止,我将提供我的代码。

HTML

      <li class="nav-home"><a href="index.php">home</a></li>

      <li class="dropdown nav-portfolio"><a href="portfolio.php">portfolio</a>

<ul>

          <li><a href="#">Photography</a></li>

          <li><a href="#">Videos</a></li>

        </ul>

      </li>

      <li class="nav-aboutme"><a href="about-me.php">about me</a></li>

      <li class="dropdown nav-socialmedia"><a href="social-media.php">social media</a>

<ul>

          <li><a href="#">facebook</a></li>

          <li><a href="#">twitter</a></li>

          <li><a href="#">instagram</a></li>

          <li><a href="#">youtube</a></li>

          <li><a href="#">vine</a></li>

          <li><a href="#">snapchat</a></li>

          <li><a href="#">shots</a></li>

          <li><a href="#">google+</a></li>

        </ul>

      </li>

      <li class="nav-contact"><a href="contact.php">contact</a></li>

      <li class="dropdown"><a href="#">more</a>

        <ul>

          <li><a href="#">blog</a></li>

          <li><a href="#">faq</a></li>

          <li><a href="#">equipment</a></li>

        </ul>

      </li>

    </ul>

JS

if(window.location.href == "http://www.example.com/index.php"){
    $('.nav-home').addClass('active');
} else if(window.location.href == "http://www.example.com/portfolio.php"){
    $('.nav-portfolio').addClass('active');
} else if(window.location.href == "http://www.example.com/about-me.php"){
    $('.nav-aboutme').addClass('active');
} else if(window.location.href == "http://www.example.com/social-media.php"){
    $('.nav-socialmedia').addClass('active');
} else if(window.location.href == "http://www.example.com/contact.php"){
    $('.nav-contact').addClass('active');
} else {
    exit();
} 

我已经通过语法检查器运行了我的 JS,它说一切都是正确的,但是这段代码没有将类添加到任何列表项中。所以总结一下,如果有人可以帮助我修复我的代码,将“活动”类添加到与当前 url 对应的列表项中。 (有关列表项和 URL,请参阅 JS)任何帮助将不胜感激!

【问题讨论】:

  • 发生了什么?
  • 然而这段代码并没有达到我想要的效果。这是什么意思?根本没有添加类,还是为所有 URL 添加了类?
  • 抱歉,此代码不会将该类添加到任何列表项@SudhansuChoudhary
  • 你把你的脚本放在哪里了?
  • 整个代码绑定在$(document).ready()??我的意思是 jQuery 的东西?

标签: javascript jquery html addclass


【解决方案1】:

对于这种情况你应该使用 switch

switch(expression) {
case n:
    code block
    break;
case n:
    code block
    break;
default:
    default code block

}

更多信息:http://www.w3schools.com/js/js_switch.asp

【讨论】:

  • 我会接受这个答案,因为在阅读了关于 Switch case 的内容后,这对我正在做的事情更有意义
【解决方案2】:

代码有什么作用吗?你说它没有做你想做的事?它在做什么?没有?尝试做

alert(window.location.href)

并查看您实际获得的值。你可以试试

if(window.location.href === "http://www.example.com/index.php")

【讨论】:

  • 它什么也没做(我更新了我的问题,抱歉措辞不好)
  • 当我在做 javascript 编码时,我总是使用 alert('让我的浏览器告诉我一些事情')。如果您没有收到警报,您就知道您的脚本甚至没有正确加载,此时您可以检查脚本的位置。
  • 好的,我试试看它是否正在执行
猜你喜欢
  • 2023-03-18
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多