2017-02-16 14 views
0

私のsvgにすべての白い塗りつぶしのパスを表示しません。jveryで塗りつぶし色でSvgパスを選択

このように構成されたSVG想像:

<svg> 
    <path class="pathok"fill="rgb(29,233, 182)"/> 
    <path class="pathok" fill="rgb(255, 255, 255)" /> 
    <path class="pathok" fill="rgb(255, 255, 255)" /> 
    <path class="pathok" fill="rgb(255, 255, 255)"/> 
</svg> 

私はこれを試してみたが、動作していない:

<script> 
    if ($("path").attr("fill") == ("rgb(255, 255, 255)")) { 
     $(this).css("display","none") 
    } 
</script> 

一般的に、私は彼の属性の値によってタグを選択することができる方法を?

答えて

1

セレクタが個別のパスではなくすべてのパスを取得しています。

これを試してみてください:

$(document).ready(function(){ 
    var $paths = $('path'); // Get all paths 
    for (var i=0;i<$paths.length;i++){ // Iterate through each one 
     var $path =$($paths[i]); // This gets a single path 
     if ($path.attr("fill") == ("rgb(255, 255, 255)")) { 
      $path.css("display","none"); 
     } 
    } 
}); 
+0

それが働いています。私はjsの初心者です。あなたは私に変数iの使用を説明できますか?ありがとうございました。 – vlk

+0

確かめてください。 「i」は「インデックス」または「カウンタ」として使用されます。カウンタを使用して '$ path'オブジェクト($ paths [i])内の現在のアイテムにアクセスするため、' for ... 'ループのどこにいるのかを追跡する必要があります。 forループが反復するたびに、 'i'が1だけ増えます(これは' i ++ 'によって行われます)。 – Chris

+0

あなたが望むものを選択するだけなら、なぜ繰り返しますか? –

0

あなたはちょうどあなたが直接、何のループは必要ありませんしたい要素を選択することができます。

私は、あなたが提供していない属性とd属性を使用していますが、原理は同じです。

$("rect[fill='rgb(255, 255, 255)']").css('display', "none");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<svg> 
 
    <rect width="90" height="30" fill="black"/> 
 
    <rect width="10" height="10" x="10" y="10" fill="rgb(29,233, 182)"/> 
 
    <rect width="10" height="10" x="30" y="10" fill="rgb(255, 255, 255)" /> 
 
    <rect width="10" height="10" x="50" y="10" fill="rgb(255, 255, 255)" /> 
 
    <rect width="10" height="10" x="70" y="10" fill="rgb(255, 255, 255)"/> 
 
</svg>

関連する問題