我正在寻找一个函数来将一个类应用于除了单击之外的所有链接。
CSS
.foot_active {
text-decoration:underline;
}
.foot_inactive {
text-decoration:none;
}
HTML
<div class="sitemap">
<table class="table_site">
<tr>
<td class="subsite"><a>op1</a></td>
<td class="subsite"><a>op2</a></td>
<td class="subsite"><a>op3</a></td>
</tr>
</table>
</div>
脚本
$('a:contains("op1")')
.live('click', function(){
$(this).addClass('foot_active');
$('a:not(.foot_active)').addClass('foot_inactive');
});
$('a:contains("op2")')
.live('click', function(){
$(this).addClass('foot_active');
$('a:not(.foot_active)').addClass('foot_inactive');
});
$('a:contains("op3")')
.live('click', function(){
$(this).addClass('foot_active');
$('a:not(.foot_active)').addClass('foot_inactive');
});
此脚本仅适用于您第一次点击链接,但不适用于未来的点击。 我想我做错了什么,但我的大脑现在似乎很生气。
谢谢。
答案 0 :(得分:2)
您永远不会删除任何类,因此您最终会获得具有非活动类的所有链接。
您实际上根本不需要非活动类,只需删除活动类。这将取代您的三个事件处理程序:
$('a') .live('click', function(){
$(this).addClass('foot_active');
$('a').not(this).removeClass('foot_active');
});
如果页面中有更多链接,您可能希望使用比'a'
更具体的选项,例如'.subsite a'
。
答案 1 :(得分:1)
首先,您不应该使用.live()
,因为它在jQuery 1.7中已弃用。
我希望这是你要找的东西。
$('.sitemap a').click(function(){
$('.sitemap a').toggleClass('foot_inactive',true).toggleClass('foot_active',false);
$(this).addClass('foot_active');
});
答案 2 :(得分:1)
对于td中所有带有.sitemap类的链接,您可以尝试:
$('.sitemap a') .live('click', function(){
$(this).addClass('foot_active');
$('.sitemap a').not(this).removeClass('foot_active');
});
答案 3 :(得分:0)
你可以试试......
$('a.foot_active').removeClass('foot_active').addClass('foot_inactive');
$(this).removeClass('foot_inactive').addClass('foot_active');
......这样做你想要的吗?
答案 4 :(得分:0)
您不想更改所有其他元素。元素可以有许多类,因此您只想切换活动类。
$('.table_site a').addClass('foot_inactive').click(function(){
$('.foot_active').removeClass('foot_active');
$(this).addClass('foot_active');
})