jquery选择除具有特定类的链接之外的所有链接
问题描述:
我正在寻找一个函数来将类应用于除点击之外的所有链接。jquery选择除具有特定类的链接之外的所有链接
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');
});
这个脚本只适用于第一次的链接点击,而不是未来的点击。 我觉得我做错了什么,但现在我的大脑似乎很生气。
谢谢。
答
为TD里面的所有链接与类称为.sitemap你可以尝试:
$('.sitemap a') .live('click', function(){
$(this).addClass('foot_active');
$('.sitemap a').not(this).removeClass('foot_active');
});
答
你可以试试...
$('a.foot_active').removeClass('foot_active').addClass('foot_inactive'); $(this).removeClass('foot_inactive').addClass('foot_active');
...这是否你想要什么?
答
你永远不会删除任何类,所以你最终会得到所有具有非活动类的链接。
实际上,您根本不需要非活动类,只需删除活动类即可。这将取代你的三个事件处理程序:
$('a') .live('click', function(){
$(this).addClass('foot_active');
$('a').not(this).removeClass('foot_active');
});
你可能想使用一个更具体的selctor比'a'
,像'.subsite a'
如果你有网页中的任何链接越多。
答
您不想更改所有其他元素。一个元素可以有很多类,所以你只需要切换活动类。
$('.table_site a').addClass('foot_inactive').click(function(){
$('.foot_active').removeClass('foot_active');
$(this).addClass('foot_active');
})
答
首先,因为它是在jQuery的1.7不赞成你不应该使用.live()
。
这是你在找什么,我希望。
$('.sitemap a').click(function(){
$('.sitemap a').toggleClass('foot_inactive',true).toggleClass('foot_active',false);
$(this).addClass('foot_active');
});