我知道这应该很简单,并且已经被覆盖了一百万次,但我只是可以;似乎可以让它发挥作用。
这是您的基本脚本,使您在列表中点击的最后一个链接成为我在其中添加“有效”类的“有效”链接。
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");
});
});
应该工作,根本不工作。
编辑此代码没有错,它运行正常。文档上面有一段代码阻止它工作。
答案 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)
答案 3 :(得分:0)
我尝试它并且它有效,你的代码没有错:
答案 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代码中的错误和警告。