首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sammy.js导航菜单

Sammy.js导航菜单
EN

Stack Overflow用户
提问于 2013-01-16 12:32:49
回答 1查看 954关注 0票数 0

我正在玩sammy.js,并试图为我的SPA构建一个不错的菜单。我的HTML结构如下所示:

代码语言:javascript
复制
<nav class="navMain">
  <ul class="nav">
    <li class="active"><a href="/#/">Home</a></li>
    <li><a href="/#aroute">A route</a></li>
    <li><a href="/#anotherroute">Anouther route</a></li>
  </ul>
</nav>
<div class="main">
  <!-- here goes everything I do with sammy -->
</div>

当然,我想要做的是在路由到该页面时将active类分配给其他菜单项。到目前为止,我还没有找到这方面的任何例子,我想出了如下结论:

代码语言:javascript
复制
this.bind('run-route', function() {
  var path = this.params.path;      
  $('.navMain li').removeClass('active').find('a[href*="' + path + '"]').parent().addClass('active');
});

在工作期间,这看起来并不是解决这个非常常见的问题的好办法。我想一定有更简单、更地道的东西,但我什么也找不到。

有人能告诉我一个更好的解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2013-01-17 03:10:45

更新路由处理程序代码中的类,在那里它知道您现在在上的是什么路由,,并且可以在列表中找到它。

对于此标记:

代码语言:javascript
复制
<nav class="navMain">
  <ul class="nav">
    <li class="active"><a href="#/">Home</a></li>
    <li><a href="#/aroute/">A route</a></li>
    <li><a href="#/anotherroute/">Anouther route</a></li>
  </ul>
</nav>

这是JS:

代码语言:javascript
复制
function SetActiveLink(name){
    var ul = $('ul')

    ul.children().removeClass('active')

    ul.find('a[href="#/'+name+'/"]').parent().addClass('active')
}

sammyapp.route('get','#/a/', function() {
    SetActiveLink('a')
})

sammyapp.route('get','#/b/', function() {
    SetActiveLink('b')
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14358585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档