我正在尝试使用Javascript / jQuery创建一个内存游戏。基本上,在每个游戏开始时生成随机数组,并且用户的任务是匹配字母集。我无法从阵列中选择单个字母。
Here's a link关于jsfiddle的工作示例,但相关部分如下:
这是插入数组的html:
<div id="game"></div>
现在,我只是想实现一个改变字母背景颜色的悬停功能。这是CSS:
.hover
{
background-color: #A6977B;
}
这是生成数组的Javascript:
function generateBoxes(gameSize, lettersSize) {
var currentLetter;
letters = randomizeArray(lettersSize);
rows = gameSize/columns;
for (var i=0; i<rows; i++) {
var row = $("<div class='row'></div>");
$("#game").append(row);
for (var n=0; n<columns; n++) {
currentLetter = letters[5*i + n];
row.append("<div class='column displayNone' id = 'r" + i + "c" + n + "'>" + currentLetter + "</div>");
}
}
};
这是悬停功能的Javascript:
$("#game").hover(function() {
$(this).toggleClass("hover");
});
这个用于悬停功能的Javascript代码用于选择数组中的所有字母。但是,我只想一次选择一个。我已尝试将#game
替换为:
#game div
#game .row .column
.column
这些选项都不能只选择一个字母(事实上,当我使用#game
以外的任何东西时,根本不调用悬停功能)。
在这里按类选择子div的正确方法是什么?
编辑:这是生成的html:
<div id="game">
<div class="row">
<div class="column displayNone" id="r0c0">E</div>
<div class="column displayNone" id="r0c1">D</div>
<div class="column displayNone" id="r0c2">E</div>
<div class="column displayNone" id="r0c3">D</div>
<div class="column displayNone" id="r0c4">B</div>
</div>
<div class="row">
<div class="column displayNone" id="r1c0">A</div>
<div class="column displayNone" id="r1c1">C</div>
<div class="column displayNone" id="r1c2">C</div>
<div class="column displayNone" id="r1c3">A</div>
<div class="column displayNone" id="r1c4">B</div>
</div>
</div>
答案 0 :(得分:3)
有两种方法可以做到这一点:
(1)所有CSS
div#game div:hover {
background-color: #A6977B;
}
(2)使用Jquery
$('#game div').hover(function(){
$('#game div').removeClass('hover');
$(this).addClass('hover');
return false;
})
答案 1 :(得分:2)
由于您正在动态生成字母div,因此您需要使用jQuery的.on()函数将mouseenter和mouseleave事件绑定到div。试试这个:
$('#game').on('mouseenter', 'div.column', function() {
$(this).toggleClass("hover")
}).on('mouseleave', 'div.column', function() {
$(this).toggleClass("hover")
});
答案 2 :(得分:0)
您可以使用伪类并选择ID:
$("#game").find("div[id=r0c0]")