0

如何将类添加到带有特定单词的 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>

一些链接上有断字,导致“包含”数组错过它们:

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

不是,<br/>而是 HTML 将这两个词呈现在不同的行上

4

3 回答 3

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 == false,但 0 !== false),如果我们要检查数组中是否存在值,我们需要检查它是否不等于(或大于) -1。

这样,如果您有其他要匹配的文本,您只需添加到该数组中。

您也可以使用contains,但它会匹配诸如click here 2等之类的东西,基本上是contains“点击这里”的任何东西,但不完全是这样。

$('a:contains(click here),a:contains(more information)').addClass('arrow');
于 2012-06-04T02:27:27.803 回答
1

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

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

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

于 2012-06-04T02:25:50.047 回答
0

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

jQuery("a").each(function() {
    var elem = jQuery(this);
    var html = elem.html();
    if (html == "click here" || html == "more information") {
        elem.addClass("arrow");
    }
});
于 2012-06-04T02:27:40.857 回答