【问题标题】:How can I add and remove a class on links using jQuery?如何使用 jQuery 在链接上添加和删除类?
【发布时间】:2010-01-09 03:03:31
【问题描述】:

让我更好地描述一下我想要在这里做什么。我正在使用 Wikispaces,默认情况下,当用户向侧面导航栏添加新页面链接时,wikispaces 会插入以下两个类之一:wiki_linkwiki_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),并为链接添加一个更能代表页面 url 的类。因此,对于 /Map+Page url,一个类将被添加到链接标题的前 3 个字母的链接中...地图。然后,如果链接 url 有两个单词(如 /Map+Page 中),该类还将在 url 中添加第二个单词的前 3 个字母,前面是一个破折号。因此,对于 /Map+Page,要添加到此链接的类将是

class="map-pag"

或者,如果它是 /Staff+Olympics url,那么要添加的类将是......

class="sta-oly"

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

除此之外,我想删除&lt;br/&gt; 的所有实例,这些实例也默认由维基空间插入。

因此,理想情况下,我想要一个 jQuery 解决方案,将上面的 3 个 a:links 更改为此...

<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>

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

感谢您提供的任何帮助!

【问题讨论】:

    标签: jquery class hyperlink add


    【解决方案1】:

    这应该做你想做的:

    // 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 隐藏 &lt;br /&gt; 标签。操作 DOM 在时间和资源上都是昂贵的,所以如果你可以隐藏它们会更快。

    CSS

    #container br { display: none; }
    

    其中#container 是那些a 标签的父元素。

    如果你真的想使用 jQuery:

    jQuery

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

    同样,#containera 标签列表的父级。

    【讨论】:

    • 嗯...由于某种原因,不显示
      标签的 CSS 技巧不起作用。那我试试jQuery。现在去试试你的解决方案,Doug。
    • 我更新了我的答案以删除正则表达式并将其替换为更好更明显的代码。
    • @Spencer B. 将#container 设置为br 标签周围的任何元素非常重要。否则,它不会匹配任何东西。如果正确,您也可以尝试#container br {display:none !important} 看看是否有帮助。
    • 嗨,Doug,非常感谢您帮助我解决这个问题。我只是意识到一些事情。由于前几天你帮助我解决了这个问题,我现在有一个冲突的类,其中一个类被添加到基于页面 url 的第一个单词的 html 元素中。因此,如果页面 url 只有一个单词,则为链接添加的 CSS 类将始终与添加到 HTML 元素的 CSS 类冲突。是否可以根据我上面的建议为链接创建类?您删除
      的解决方案奏效了!
    • 哦,是的...忘记了,道格。而且我一直在使用相同的方法覆盖当前的默认 wikispace 样式,在这里我完全忘记了这一点……哈哈。我的坏...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    相关资源
    最近更新 更多