2016-10-14 6 views
0

要素をループし、hrefに基づいてクラスを追加するといういくつかの問題があります。 クラスがhrefに部分文字列を持たなくても、クラスはすべての要素に適用されているようです。jQuery各ループは、部分文字列を持つ特定の要素にのみクラスを適用します。

HTML:

<ul> 
    <li><a href="#special-link">link 1</a></li> 
    <li><a href="/normallink1">link 2</a></li> 
    <li><a href="/normallink2">link 3</a></li> 
</ul> 

のjQuery:

$('a').each(function() { 
    var _this = $(this); 
    if(_this.attr('href').substr('special')!==0){ 
    _this.addClass('special_link'); 
    } 
}); 

私もjsfiddleを設定しています。 これは重複かもしれないが、私は質問を投稿する前に周りを見ていた謝罪。

ありがとうございました。

これはあなたのために働く必要があります
+2

'.SUBSTR( '特別')!== '0'でなければなりません.indexOf( 'special')> -1' – Andreas

+3

なぜかというだけではありません:$( 'a [href * = special]')。addClass( 'special_link'); '? https://jsfiddle.net/9oxoog4w/2/ –

+0

@A.Wolff、あなたがそれが貧しい人なら、私はそれを受け入れるでしょう。 – asturnick

答えて

3
  1. 不要

    $("a[href*='special']").addClass('special_link'); 
    
2

、各ループの

$('a').each(function() { 
    var _this = $(this); 
    if(_this.attr('href').indexOf('special') > -1){ 
     _this.addClass('special_link'); 
    } 
}); 
+0

素晴らしい作品です! – asturnick

関連する問題