【发布时间】:2021-05-11 04:41:12
【问题描述】:
尝试使用jQuery 过滤器将<a> hrefs 缩小到一个,然后添加标签active 类。
我这样做是因为我从侧边栏子菜单被重定向并且希望仍然保持侧边栏菜单打开。
$(document).ready(function () {
var url = window.location;
$('ul.treeview-menu a').filter(function () {
return url.indexOf(this.href) > -1;
}).parentsUntil(".sidebar-menu > .treeview-menu").addClass('active');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="sidebar-menu" data-widget="tree">
<li class="header">General</li>
<li class="home"><a href="/p/index.php"><i class="fas fa-tachometer-alt"></i> <span> Dashboard</span></a></li>
<li class="header">Data Managment</li>
<li class="treeview">
<a href="#">p <span>Tree</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="/p/pages/foo.php">foo</a></li>
<li><a href="/p/pages/bar.php">bar</a></li>
<li><a href="/p/pages/blah.php">blah</a></li>
<li><a href="/p/pages/blahh.php">blahh</a></li>
</ul>
</li>
<li class="treeview">
<a href="#"></i> <span>Tree 2</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="/p/pages/aaa.php">aaa</a></li>
...
</ul>
</li>
</ul>
如果我在foo 和href 中被重定向,就像/p/pages/foo.php/new.php 我仍然想保持活跃。
为什么这不起作用?
【问题讨论】:
-
@freedomn-m 不幸的是没有用。我会尝试分享一些html
-
@freedomn-m 我在控制台中收到此错误
url.indexOf is not a function和.closest(".sidebar-menu").find(".treeview-menu").addClass('active')返回所有这些错误,但 html 不正确 -
@freedomn-m 控制台错误通过将
url替换为window.location.href而消失 -
@freedomn-m
return console.log(window.location.href.indexOf(this.href) > -1)返回false。这意味着它找不到任何东西!? -
@freedomn-m 什么都没有。是空的
标签: javascript html jquery