添加和删​​除活动类

时间:2011-02-03 14:51:04

标签: jquery

我知道这应该很简单,并且已经被覆盖了一百万次,但我只是可以;似乎可以让它发挥作用。

这是您的基本脚本,使您在列表中点击的最后一个链接成为我在其中添加“有效”类的“有效”链接。

HTML

<ul id="projectsList">
            <li><a href="#" class="activeProject" id="portoftyne">Port of Tyne</a></li>
            <li><a href="#" id="eaga">Eaga</a></li>
            <li><a href="#" id="gong">Gong</a></li>
            <li><a href="#" id="nufc">NUFC</a></li>
        </ul>

的jQuery

    $(document).ready(function() {
    $('#projectsList a').click(function(){
         $('.activeProject').removeClass('activeProject')
         $(this).addClass("activeProject");
    });
});

应该工作,根本不工作。

编辑此代码没有错,它运行正常。文档上面有一段代码阻止它工作。

5 个答案:

答案 0 :(得分:1)

我强烈建议使用变量来保存对activeProject的引用。如果您有大页面,这将节省很多处理,因为搜索DOM可能很昂贵。它也会使它不像你所拥有的那样容易出错(选择错误的元素)。

$(document).ready(function() {
        var active = $('#projectsList a.activeProject');
        $('#projectsList a').click(function() {
            if(active) $(active).removeClass('activeProject');
            $(this).addClass("activeProject");
            active=this;
        });
    });

答案 1 :(得分:0)

尝试使用选择器更具体:

$(document).ready(function() {
    $('#projectsList li a').click(function(){
         $('.activeProject').removeClass('activeProject')
         $(this).addClass("activeProject");
    });
});

我不确定是什么问题。此代码适用于其他人......

答案 2 :(得分:0)

我没有看到任何问题。

看:http://jsfiddle.net/JqMK8/

它正在运作。

错误必须在其他地方

答案 3 :(得分:0)

我尝试它并且它有效,你的代码没有错:

DEMO

答案 4 :(得分:0)

输出处理器可能更改了ID #projectsList?可能发生在.NET或某些Java框架中。

尝试分配类.projectsList,看看它是否有效。

我还可以推荐事件代表团的做法:

$('.projectsList').click(function(evt){
  if ( evt.target.nodeName == 'A' ) {
    var elm = $(evt.target);
    if ( elm.hasClass('activeProject') ) { return; }
    $('.activeProject').removeClass('activeProject');
    $(evt.target).addClass('activeProject');
  }
});

(简化和快速撰写)

<强>更新 山姆,如果你还没试过,我推荐JavaScript Lint。使用它online或在编辑器中(有捆绑包和插件)可以让您轻松发现JavaScript代码中的错误和警告。