これが私が行う方法です-簡単で短い方法です。あなたがそれをどのように拡張したいかわかりません:
配列を作成し、ユーザーにクリックしてもらいたい div にイベント リスナーをバインドします。
ユーザーがこの画像をクリックするたびに、イベント オブジェクトが渡され、レイアウトに応じて、マウスの X 座標と Y 座標を読み取ることができます - .position() または .offset()。これらの値を格納する JSON オブジェクトを作成します。
var hit = {
id: 1,
x: 250,
y: 365,
//add more attributes if you like/need
//for this particular 'hit'
}
そして、このオブジェクト (-表記) を配列に格納できます。
hitz.push(hit);
この配列に基づいて UI を「更新」する必要があります。for...in ループでループして、画像を作成するだけです。
var hockeyIceClone= $("div.hockey-ice").clone(true);
for (var i in hitz) {
var hit = hitz[i];
hockeyIceClone.append(
//assuming that your .hockey-ice div has position:relative at least
var image = $(new Image('image/path.png'));
//add more stuff for image if you like
$(image).css({
position: absolute,
left: hit.x,
top: hit.y
})
);
}
$("div.hockey-ice").replaceWith(hockeyIceClone);
クローンを作成する理由は、配列をループし、配置されて UI に表示される「コンテナ」に要素を追加すると、レンダリング中に点滅する可能性があるためです。したがって、最初に「収集」して、まとめて UI に配置することをお勧めします。また、クローン作成以外の方法を使用することもできますが、これはオプションにすぎません。