我有2个菜单管理类别和管理产品,点击时变为“有效”。问题是,在管理产品菜单下有按钮'添加产品',当我去添加产品页面菜单'管理产品'时不要保持'活动'。
<aside class="main-sidebar">
<section class="sidebar">
<ul class="sidebar-menu">
<li>
<a href="manage_category.php">
<i class="fa fa-table"></i> <span>Manage category</span>
</a>
</li>
<li>
<a href="manage_products.php">
<i class="fa fa-table"></i> <span>Manage products</span>
</a>
</li>
</ul>
</section>
<!-- /.sidebar -->
</aside>
<script type="text/javascript">
$(document).ready(function() {
var url = window.location;
// for sidebar menu entirely but not cover treeview
$('ul.sidebar-menu a').filter(function() {
return this.href == url;
}).parent().addClass('active');
});
</script>
答案 0 :(得分:1)
您可以在菜单中添加“添加产品”的隐藏链接
<li>
<a href="manage_products.php">
<i class="fa fa-table"></i> <span>Manage products</span>
</a>
<a href="add_product.php" style="display:none"></a>
</li>
并且您的javascript代码应该正常工作
答案 1 :(得分:1)
您的window.location不仅会返回整个网址。
这是有效的:
$(document).ready(function() {
var url = location.pathname.split('/').slice(-1)[0];
jQuery('ul.sidebar-menu a').each(function() {
if($(this).attr('href') == url)
$(this).parent().addClass('active');
});
});
答案 2 :(得分:0)
我怀疑你的过滤器中有url(window.location)!= this.href。
this.href将是例如manage_products.php但window.location是一个对象。 (检查window.location的MDN文档)。 https://developer.mozilla.org/en-US/docs/Web/API/Location
即使window.location.href仍会提供完整的网址。但是 - window.location.pathname可能接近你想要的。
如果您在此行上调试代码:return this.href == url;并检查你将看到问题的价值观。
答案 3 :(得分:0)
如果“添加产品”不是不同页面,请尝试以下代码。
var parameter = Sys.WebForms.PageRequestManager.getInstance();
parameter.add_endRequest(function () {
var url = window.location;
// for sidebar menu entirely but not cover treeview
$('ul.sidebar-menu a').filter(function() {
return this.href == url;
}).parent().addClass('active');
})