【问题标题】:JQuery add active class to parent class on reloadJQuery在重新加载时将活动类添加到父类
【发布时间】:2016-05-07 03:49:01
【问题描述】:

当我将“#”从 href 替换为 URL 时,我的“活动”类不起作用。当我单击链接时,页面刷新并且“活动”类不会改变。 这是我将 # 更改为 URL 之前的工作代码。

<ul class="additional-menu">
<li class="active"><a href="#">Link1</a></li>
<li><a href="#" id="link2">Link2</a>
<ul>
<li><a href="#" id="link2.1">Link2.1</a></li>
</ul>
</li>
<li><a href="#" id="link3">Link3</a></li>

jquery:

$('.additional-menu a').on('click', function() {
var t = $(this);
t.parents('.additional-menu').find('li').removeClass('active'); 
t.parentsUntil('.additional-menu', 'li').addClass('active'); 

})

更改后(不工作):

 <ul class="additional-menu">
 <li class="active"><a href="link1.php">Link1</a></li>
 <li><a href="link1.php" id="link2">Link2</a>
 <ul>
 <li><a href="link2-1.php" id="link2.1">Link2.1</a></li>
 </ul>
 </li>
 <li><a href="link3.php" id="link3">Link3</a></li>
 </ul>

【问题讨论】:

  • 我不确定你想做什么,但看起来你需要使用 AJAX。

标签: javascript php jquery


【解决方案1】:

当您单击 URL 链接时,页面正在刷新,当前的 Jquery 将不再工作。您必须根据页面加载时DOM准备就绪而不是onClick的页面 URL 更新代码来确定活动菜单。

您必须将活动类设置为具有找到的文件名作为 href 属性的菜单。

这是使用 jquery 选择器的完整代码:

 $(document).ready(function(){
    var fullpath =window.location.pathname;
    var filename=fullpath.replace(/^.*[\\\/]/, '');
    //alert(filename);
    var currentLink=$('a[href="' + filename + '"]'); //Selects the proper a tag
    currentLink.parent().addClass("active");
    }))

【讨论】:

  • 你的意思是我不能包括这个导航?我必须在我拥有的每个页面中复制并粘贴代码并手动设置活动类?
  • 不,您不必手动设置活动菜单。我已经更新了如何通过 JavaScript 做到这一点的答案。
  • 我是 JavaScript 新手。你能根据我的代码提供完整的解决方案吗?
  • 好的。我使用 Jquery 选择器添加了正确的代码。
  • 对不起。我错误地使用了路径名。请再次检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-02
  • 2021-03-21
  • 1970-01-01
  • 2011-03-29
  • 2012-09-01
  • 2014-02-23
  • 1970-01-01
相关资源
最近更新 更多