2012-01-06 12 views
2

複数の不規則な形のオブジェクト(例えば、住宅)が互いに重ね合わされているページでマウスイベントを処理する必要があります。 jQuery .on()の通常の方法を使用すると、オブジェクト(またはイメージ)の透明部分をクリックした場合でも、報告されるイベントソースは常に一番上のオブジェクトになります。イベントの委任を伴う不規則な形のオブジェクトのマウスイベントの処理

例:Xの位置をクリックしても、赤い三角形を含むタグは常にイベントソースになります。 Example

マウスクリックが三角形の内側にないことを検出できます。私が必要とするのは、イベントを下の緑色の三角形に「転送」する方法です。

EDIT:私の現在のアプローチは、すべてをラップする大きなdivのイベントをキャッチし、jQueryセレクタを使用して座標を比較してどのオブジェクトがマウスの下にあるかを調べ、マウスが透明部分か否か。それはうまく動作しますが、ゆっくりであり、特にマウス移動イベントが連続して発生していると、がたくさんのを消費しているようです。

編集2: この画像はBuilding a game engine with jQueryから抽出され、私のアプローチはそれとほぼ同じです。そして今、これは質問です: enter image description here

+0

私はこれを行う一貫したプラグアンドプレイ方法はないと思います。 – Purag

+0

イメージマップとエリアタグの使用はどうですか? – dfsq

+0

paper.jsについて学び、簡単で非常に強力です(Chrome、Firefox 3.5+、IE9の新しいブラウザでのみ動作します) –

答えて

0

プレーンなHTML要素を使用して複雑なグラフィックを描いていますか?正確なニーズはわかりませんが、SVGやキャンバスを使用する方が理にかなっています。シェイプのクリックイベントを捕捉する方がずっと簡単です。

関連する問題