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>

一部のリンクには単語区切りがあり、「contains」配列がそれらを見逃します。

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

それはそうではありません<br/>が、HTMLは2つの単語を別々の行にレンダリングしています

4

3 に答える 3

4

「ここをクリック」と完全に一致させる場合は、フィルターを使用します。

$('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 2contains

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

包含セレクター(大文字と小文字を区別)を使用します。

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

これを行うCSS3セレクターがないため、これにはJQueryを使用する必要があります。

于 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 に答える