如何使用jQuery在链接上添加和删除类?

时间:2010-01-09 03:03:32

标签: jquery class hyperlink add

让我更好地描述一下我想在这里做些什么。我正在使用Wikispaces,默认情况下,当用户向侧面导航栏添加新页面链接时,wikispaces会插入两个类别之一: wiki_link wiki_link_new 。这就是它的样子......

<a href="/Map+Page" class="wiki_link">Map Page</a><br/>
<a href="/Staff+Olympics" class="wiki_link">Staff Olympics</a><br/>
<a href="/Staff+Meetings" class="wiki_link_new">Staff Meetings</a><br/>

我想自动删除这两个类(wiki_link和wiki_link_new),并在更好地代表页面网址的链接中添加一个类。因此,对于/ Map + Page url,一个类将被添加到链接中,该链接是链接标题的第3个字母...地图。然后,如果链接url有两个单词(如/ Map + Page),该类还会在url中添加第二个单词的前3个字母,前面加一个破折号。因此,对于/ Map + Page,要添加到此链接的类将是

class="map-pag"

或者,如果是/ Staff + Olympics网址,则要添加的课程将是......

class="sta-oly"

我想如果a:link url中有超过2个单词,那么在将CSS类应用到链接时会忽略多余的单词,只关注第一个单词的前3个字母,然后是破折号,然后是第二个单词的前3个字母。

除此之外,我还想删除<br/>的所有实例,这些实例也默认由wikispaces插入。

理想情况下,我想要一个jQuery解决方案来改变上面的3 a:链接......

<a href="/Map+Page" class="map-pag">Map Page</a>
<a href="/Staff+Olympics" class="sta-oly">Staff Olympics</a>
<a href="/Staff+Meetings" class="sta-mee">Staff Meetings</a>

不确定我的类命名约定是否最佳。所以,如果你有更好的建议,我很乐意听到它! :)

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:3)

这应该做你想要的:

// Select the links, and remove their classes
$(".wiki_link, .wiki_link_new").attr('class','').each(function(){
    var className = $(this).attr('href').substr(1).toLowerCase().split('+').slice(0,2).join('-');
    $(this).addClass(className);
});

我只想用CSS隐藏<br />标签。操作DOM的时间和资源都很昂贵,所以如果你能隐藏它们会更快。

<强> CSS

#container br { display: none; }

#container是哪个元素是a标记的父元素。

如果你真的想使用jQuery:

<强>的jQuery

$("#container br").remove();

同样,#containera代码列表的父级。