2016-05-03 12 views
0

私は5人の子供> 1サークルと4パスのsvgを持っています。それぞれに異なる塗りつぶし色があります。どの子供がクリックされたのかを理解して、それを返すことは可能ですか?子SVGノードの塗りつぶしをJqueryで探しますか?

のような何か...

$("#svgname").click(function(){ 
    alert($(clickedchildname).attr("fill")); 
}); 

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

UPDATE:

私のコードは次のように設定されている...

HTML

<div class=""> 
    <img src="img/colorsystem/darkblue.svg" height="170" width="170" id="darkblue"> 
</div> 

JS

$("#darkblue").children('g').children().click(function(){ 
    alert($(this).attr("fill")); 
}); 

SVG

<?xml version="1.0" encoding="utf-8"?> 
<svg> 
<g id="darkblueholder"> 
    <circle id="base" class="st0" cx="85.1" cy="84.3" r="71.4"/> 

答えて

2

はい、それはSVGをインラインでchildren方法、使用可能です:あなたも.children('path, circle')を使用して、子のタイプを指定することができ

<svg height="170" width="170"> 
    <use id="svgname" xlink:href="img/colorsystem/darkblue.svg#darkblueholder"></use> 
</svg> 

$($("#svgname").attr("instanceRoot")).children().click(function(){ 
    alert($(this).attr("fill")); 
}); 

useによって

$("#svgname").children().click(function(){ 
    alert($(this).attr("fill")); 
}); 

または参照を。

imgを使用してロードされたsvgツリーにアクセスすることはできません。です。です。

+0

ありがとうございます@pavel私はこの実行するように見えることはできません。上記の投稿を自分のコードで更新しました。私が間違っていることは何ですか?本当にありがとう! – andehlu

+0

@andehlu Pavelが強調しているように、SVGが ''を使用してラップされている場合、SVGと対話できません。それをインライン化する必要があります。私が正しく覚えていれば、Pavelが提案した ''メソッドは過去にFirefoxでしか動作しませんでした。 –

関連する問題