如何在重定向到另一个页面时将“活动”类保持为li标记?

时间:2017-08-31 11:20:32

标签: php jquery adminlte

我有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>

4 个答案:

答案 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');

})