这是我的做法 - 简单,简短的方式,我不知道你想如何扩展它:
我会创建一个数组,并将事件侦听器绑定到您希望用户单击的 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'
}
您可以将此对象(-notation)存储在数组中:
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 上。您也可以使用除克隆以外的其他方法,这只是一种选择。