jQuery“主动”类赋值

时间:2009-08-11 21:06:40

标签: jquery state sticky

我想要完成的只是能够拥有一个无序链接列表,其中单击一个链接,父列表项被赋予“活动”类。在该列表中单击另一个链接后,它会检查是否已分配“活动”,将其从该列表项中删除,并将其添加到最近单击的链接父列表项中。

示例:

第一步 - 用户点击了“我是第二个链接”链接

<ul>
<li><a href="#">I am link one</a></li>
<li class="active"><a href="#">I am link two</a></li>
</ul>

第二步 - 用户现在点击了“我是链接一个”链接

<ul>
<li class="active"><a href="#">I am link one</a></li>
<li><a href="#">I am link two</a></li>
</ul>

很简单,但男人我打败了我。

3 个答案:

答案 0 :(得分:10)

假设:UL元素具有类'linksList'。

$('.linksList li a').click(function()
{
  $('.linksList li').removeClass('active');
  $(this).parent().addClass('active');
});

答案 1 :(得分:7)

像下面这样的东西应该这样做

$(function() {
    $('li a').click(function(e) {
        e.preventDefault();
        var $this = $(this);
        $this.closest('ul').children('li').removeClass('active');
        $this.parent().addClass('active');
    });
});

<强> Working Demo

答案 2 :(得分:1)

这个问题现在有点老了,但我认为仍有改进空间。

“传统”本地事件绑定:

$("ul a").click(function(){
    $(this).parent("li").addClass("active")
        .siblings().removeClass("active");

    # return false to cancel the default action (e.g. follow the link):
    return false;
});

现在,通过delegate()使用事件委托(jQuery +1.4.2)。允许您动态添加额外的&gt; li&gt; a,而无需重新绑定事件:

$("ul").delegate("a", "click", function(){
    $(this).parent("li").addClass("active")
        .siblings().removeClass("active");

    # return false to cancel the default action
    # and prevent it from bubbling (further) up:
    return false;
});

将“ul”更改为仅与所需列表匹配的任何内容,例如: “.linksList”,“#nav”等