【问题标题】:navigation bar onclick not adding the class using jquery导航栏onclick不使用jquery添加类
【发布时间】:2013-09-30 17:15:07
【问题描述】:

在我的导航栏中,我需要在导航栏列表中添加一个“活动”类。我的问题是添加课程页面后刷新并且活动课程再次隐藏。请帮助。我不知道该怎么办。

HTML

<div class="navigation_part">
    <div id="top-nav">
        <ul>    
            <li class=""><a href="index.php">Home</a></li>                       
            <li class=""><a href="about.php">About&nbsp;Us</a></li>
            <li class=""><a href="entrepreneurs.php">Entrepreneurs</a></li>         
            <li class=""><a href="investors.php">Investors</a></li>
            <li class=""><a href="contactus.php">Contact&nbsp;Us</a></li>   
        </ul>   
        <div class="nav_bar_underline"></div>
    </div>
</div>

jQuery

$(document).ready(function() {
// I tried these both but both not working
$('.navigation_part li').on('click', function() {
$(this).addClass('active').siblings().removeClass('active');
});
$('.navigation_part li a').click(function(e) {
e.preventDefault(); // prevent the default action
e.stopPropagation; // stop the click from bubbling
$('.navigation_part li').removeClass('current');
$(this).parent().addClass('current');
});  });

如果我使用preventDefault() href 的锚点不起作用...

【问题讨论】:

  • 检查一下它工作正常jsfiddle.net/ef694
  • 如果你点击锚点,很明显页面会被重新加载。您希望链接正常工作还是重新加载页面?
  • 检查您的浏览器控制台可能会显示您的 Jquery 中的错误。

标签: jquery html


【解决方案1】:

当您导航到另一个页面时,使用 JavaScript 对当前页面所做的任何更改都将丢失。浏览器不会自动将更改应用到其他页面上的菜单(无论如何,这是一个不同的菜单。)

除非您有一些动态系统来捕获点击并使用 AJAX 更改页面内容,但这似乎不太可能。

实现您可能需要的最简单的方法是在服务器端进行,因为您似乎使用的是 PHP:

<li class="<?php if( __FILE__ === "index.php" ) echo "actuve"; ?>"><a href="index.php">Home</a></li> 
<li class="<?php if( __FILE__ === "about.php" ) echo "active"; ?>"><a href="about.php">About&nbsp;Us</a></li> 
...etc

【讨论】:

  • 我希望将类名添加到导航栏。但它没有发生。
【解决方案2】:

用php可以做得更好 执行以下操作

在 index.php、contactus.php、aboutus.php 等每个页面中,在顶部添加此代码

  <?php $page= basename($_SERVER['PHP_SELF']);
    include ("header.php");
     ?>

header.php 修改

<div class="navigation_part">
    <div id="top-nav">
        <ul>    
            <li class="<?php echo ($page == "index.php" ? "active" : "")?>"><a href="index.php">Home</a></li>                       
            <li class="<?php echo ($page == "about.php" ? "active" : "")?>"><a href="about.php">About&nbsp;Us</a></li>
            <li class="<?php echo ($page == "entrepreneurs.php" ? "active" : "")?>"><a href="entrepreneurs.php">Entrepreneurs</a></li>         
            <li class="<?php echo ($page == "investors.php" ? "active" : "")?>"><a href="investors.php">Investors</a></li>
            <li class="<?php echo ($page == "contactus.php" ? "active" : "")?>"><a href="contactus.php">Contact&nbsp;Us</a></li>   
        </ul>   
        <div class="nav_bar_underline"></div>
    </div>
</div>

【讨论】:

  • 我想将“活动”类添加到导航栏 (li)。但是对我来说,如果添加了类,href 不起作用.. 如果 onclick href 起作用,则没有添加类!不知道是什么问题
  • @Supriya ,如果 href 工作然后页面导航到其他页面,那么当前页面如何使用导航栏显示。
  • 希望你明白我的意思,你必须把这个导航url粘贴到每个页面,比如index.php,contactus.php,..etc,并保持页面对应的'li'是active,这是有效的方法
  • 我对所有页面都使用 header.php.. 所以根据你的说法,我应该告诉我..
  • 哦,你使用了单独的 php 页面作为标题的权利..好的,我会向你解释
猜你喜欢
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多