2017-04-14 4 views
0

https://codepen.io/jriggs/pen/YVPvwv「子供の学習センター」の色の一部に

クリックすると、期待通りに動作しますが、テキストをクリックすると、文字のパスオブジェクトを返しSVGに最も近いポリゴンを見つけ、私はテキスト

が含まれているポリゴンを取得したいです

問題は、ポリゴンの上にテキストの形があるため、クリックするとポリゴンが選択されないためです。クリックすると

私はsvgのためのgetParerentのようなものが必要です。なしの成功とZインデックスのプロパティをいじり

$(this).closest('polygon') 

も:

必要であれば、私はまた私がセレクタとしてのポリゴンを使用しようとした、とも最も近いjQuerysているSVGコードを編集することができます。このファイルはデザイナーから私に渡されました。オプションであるかもしれないもっとjQueryのフレンドリーな形式でエクスポートする方法があれば。画像そのものは、多くの図形とレイヤーを持つフロアプランです。

+0

完全な例、またはCodePenを投稿してください。 –

+0

何の完全な例? – jriggs

+0

私はHTMLを見ることができるように... '.closest'がうまくいかない理由をどのように伝えますか?テキストは少なくとも子供であるか? –

答えて

1

クリックした要素をSVGでターゲットに設定する場合は...
イベントターゲットを使用する必要があります。

私はあなたがしたいのか分からないが...
は、だから、僕はellemet classtagnameをクリックCONSOLE.LOG。
視覚的に明瞭にするために、fillの色をシアン色に変更します。

これを参照してくださいCodePen

$(document).ready(function() { 
    $("#Layer_1").click(function (e) { 

    var eventTarget = $(e.target); 

    var clickedClass = eventTarget.attr("class"); 
    var clickedTagname = eventTarget[0].tagName; 

    console.log("\nA click occured on: " + clickedClass) 
    console.log("Which is a: " +clickedTagname); 

    // Action if target is not a paths (assuming those are all letters) and is not text 
    if(clickedTagname != "path" && clickedTagname != "text" ){ 
     eventTarget.css({"fill":"cyan"}); 
    } 

    }); 
}); 
+0

これにも同じ問題があります。部屋の中の文字をクリックすると、その文字の塗りつぶしの色が変わります。部屋のポリゴンの色を更新したいだけです。ポリゴン内の文字をクリックすると、そのポリゴンの色が更新されます。 – jriggs

+0

文字である 'paths'に特定のクラスを与える必要があります。 'if'条件を使用して、それらをフィルタリングすることができます。いくつかの 'path'は文字ではありません。だから...選択肢がありません。 –

+0

すべてのパスが文字であると仮定して、これをどのように達成しますか? – jriggs

関連する問題