我使用JavaScript为游戏生成地图,每个图块都是单独的div。为了能够在我的网站上定位地图,我将它们全部扔在另一个div中。
所以例如,
<div id="mapBox">
<div id="tile" ... ></div>
<div id="tile" ... ></div>
</div>
#tile div是根据XML文件中的数据生成的,因此它们是动态生成的。在每个#tile上,我有一个onmouseevent触发一个函数(alert(1)现在只是让它工作)但它似乎永远不会被触发。
如果我在#mapBox上放了一个onmouseevent它会触发它,但我不能让它为#tile div工作。
对此有任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
不确定如何选择#tile
div,但是多个元素具有相同ID无效。
使用重复ID进行选择通常只会为您提供第一个匹配(或其他一些不可预测的行为)。
当需要重复的标识符时,您应该使用类而不是ID。
<div id="mapBox">
<div class="tile" ... ></div>
<div class="tile" ... ></div>
</div>
答案 1 :(得分:0)
如上所述,第一个问题是您对许多元素使用相同的id,因此事件仅在第一个元素上触发。
其次,您应该在像这样的瓷砖上课后使用#mapBox
上的.delegate()
方法
$('#mapBox').delegate('.tile', 'mouseover', function(e){
//do whatever here
})
示例http://jsfiddle.net/nXa27/1/
<强>更新强>
抱歉,没看到你不是在谈论jquery ..
以下是纯javascript http://www.jsfiddle.net/AvJf7/
的示例您仍然需要在贴图中添加tile
类,以便轻松有效地进行选择。