我正在开发一个 jQuery 游戏。我有div
一个 2x2 设计的 4 秒。玩家需要选择 1 个选项并使用另一个按钮进行验证。问题是,我有一个悬停效果,添加了一个以低不透明度更改背景的类,以及一个点击效果将背景设置为更高的不透明度。对于div
s 2、3 和 4,它工作正常 - 我悬停并且背景以不透明度 0.3 改变颜色,当我将鼠标移出时,它又变回白色。当我单击它时,它会将背景更改为 0.4,并且悬停不再影响它们。但是,这不适用于第一个 div:div
悬停时更改背景颜色,但是当我单击它时,它会保持悬停颜色,当我鼠标移出时,我会看到单击颜色,每次悬停时它都会改变悬停再次着色等等。
为什么它只发生在 div 1 上?
代码:
//hover effects
$(".respuesta1,.respuesta2,.respuesta3,.respuesta4").hover(
function () {
$(this).addClass("respuestahover");
},
function () {
$(this).removeClass("respuestahover");
});
//on click function for div1
$(".respuesta1").on("click", function () {
//if it hasnt been clicked, toogle class and change var to true
if (prendido1 == false) {
$(this).toggleClass("respuesta1b");
prendido1 = true;
//if any of the other divs are clicked by the time you are clicking unclicked 1, turn them off
if (prendido2 == true) {
$(".respuesta2").toggleClass("respuesta2b");
prendido2 = false;
}
if (prendido3 == true) {
$(".respuesta3").toggleClass("respuesta3b");
prendido3 = false;
}
if (prendido4 == true) {
$(".respuesta4").toggleClass("respuesta4b");
prendido4 = false;
}
//if is already clicked, turn off and change var to false
} else {
$(this).toggleClass("respuesta1b");
prendido1 = false;
}
});
最后一部分对每个 div “respuesta2”、“respuesta3”等重复。
任何想法?
编辑
我试图清理代码来制作一个 jsFiddle,我想我让它工作了:
如果有人感兴趣,我将把代码留在那里,请注意代码未完善,需要更多概括。
编辑 2
经过一番测试,我实际上发现了问题:
如果我改变我的 css 类的顺序,应用程序就会发疯:
这个是正确的,先悬停
.respuestahover{
background-color:#f00;
opacity:0.2;
}
.respuestab{
background-color:#f00;
opacity:0.5;
}
这个不正确,悬停第二个:
.respuestab{
background-color:#f00;
opacity:0.5;
}
.respuestahover{
background-color:#f00;
opacity:0.2;
}
我不太确定它为什么会这样,但我很高兴我弄明白了。