jQuery addclass与特定单词的链接

时间:2012-06-04 02:24:15

标签: jquery hyperlink addclass

如何将类添加到具有特定单词的href标记中? 我想要一个标签的每个实例都有“点击这里”和“更多信息”来添加一个类。

<a href="">click here</a> <a href="">more information</a>

成为:

<a href="" class="arrow">click here</a> <a href="" class="arrow">more information</a>

某些链接上有单词分隔符,导致“contains”数组错过它们:

    <a title="Vision and Values" href="/about-us/vision-and-values.aspx">click
here</a>

它不是<br/>,而是HTML在单独的行中呈现两个单词

3 个答案:

答案 0 :(得分:4)

如果您想完全匹配“点击此处”,请使用filter

$('a').filter(function() {
    var text = $(this).text();
    return text === 'click here' || text === 'more information';
}).addClass('arrow');

如果您有很多条件,请使用inArray http://api.jquery.com/jQuery.inArray/

$('a').filter(function() {
    var whitelist = ['click here', 'more information'];
    var text = $(this).text();
    return $.inArray(text, whitelist) != -1;
}).addClass('arrow');
  

因为JavaScript将0视为松散等于false(即0 ==   假,但是0!== false),如果我们检查是否存在值   在数组中,我们需要检查它是否不等于(或大于)   -1

这样,如果你有一个匹配的附加文本,你只需要添加到那个数组。

您也可以使用contains,但它会匹配click here 2等内容,基本上是contains“点击此处”的内容,但不完全相同。

$('a:contains(click here),a:contains(more information)').addClass('arrow');

答案 1 :(得分:1)

使用contains选择器(区分大小写):

$("a:contains('click here')").addClass('arrow');

必须使用JQuery,因为没有CSS3选择器可以做到这一点。

答案 2 :(得分:0)

我认为你可能只需要一个常规循环,例如:

jQuery("a").each(function() {
    var elem = jQuery(this);
    var html = elem.html();
    if (html == "click here" || html == "more information") {
        elem.addClass("arrow");
    }
});