属性を持つIMG
( id
less) 要素があるとしusemap="#hotmap"
ます。次に、膨大な量のs (たとえば >1000)を含むこの<MAP name="hotmap">
要素 ( 内) があります。何百ものイベントリスナーを作成する代わりに、 sのイベント処理を要素に委譲したいことは明らかです。BODY
AREA
AREA
MAP
ここで、イベント ハンドラ関数 ( for ) で、イベントを発生させたを使用するMAP
への参照を取得したいと考えています。ただし、and要素は HTML を持つことができないため、その子の中に含めることはできません。問題は、このイベント ハンドラで をキャッチするにはどうすればよいかということです。IMG
MAP
MAP
BODY
IMG
MAP
IMG
些細な例:
<img src="some_image.png" usemap="#hotmap" />
...
<map id="map" name="hotmap">
<area shape="circle" coords="100,100,50" />
...
</map>
map.addEventListener('click', function (e) {
var area = e.target,
image = ?; // How to refer the img
...
}, false);
補足事項
特定のカスタム属性を持つ画像のホットマップを動的に作成して割り当てるオブジェクトが必要な HTA プロジェクトに取り組んでいます。このオブジェクトはAREA
s のデータを外部ファイルから取得し、この 1 つの詳細を除いてすべて正常に動作しています。今のところ、「user」への参照を含むカスタム プロパティをIMG
each に追加していAREA
ます。これは、イベント ハンドラで 1 回だけ実行できれば不要ですが。
編集
jsFiddleでのライブ デモ(HTA は含まれていません。どの (?) 最新のブラウザーでも動作します)
編集Ⅱ
MAP
に従ってサイズを変更することもできるため、 を再利用できないことに気付きましたIMG
。そのため、s の代わりにIMG
への参照を入れました。MAP
AREA
これで問題は解決しましたが、一般的に、イベントハンドラで を取得する方法を知りたいIMG
です。提案されたquerySelector()
解決策はうまくいかないようです(以前にタンブルされましたが、今は戻りますundefined
)