我模拟了纸牌游戏——你可以在这里看到当我转动它们时,我将一个类“返回”给它们,它们的背景图像由一个公共 ID 给出。正如您在转动其中两个后看到的那样,它们又掉头了。但是,如果它们具有相同的图像,我想让它们保持转动。并且以任何方式我会尝试我无法弄清楚如何使用组合的长度,例如
if($('.back.#i1').length==2) {do smth}
删除使它们可点击的类“面”。
我模拟了纸牌游戏——你可以在这里看到当我转动它们时,我将一个类“返回”给它们,它们的背景图像由一个公共 ID 给出。正如您在转动其中两个后看到的那样,它们又掉头了。但是,如果它们具有相同的图像,我想让它们保持转动。并且以任何方式我会尝试我无法弄清楚如何使用组合的长度,例如
if($('.back.#i1').length==2) {do smth}
删除使它们可点击的类“面”。
不知道它是否能解决您的所有问题,但您对 ID 的使用并不是最好的:
<div id="content">
<div id="i1" class="card face"></div>
<div id="i2" class="card face"></div>
<div id="i1" class="card face"></div>
<div id="i2" class="card face"></div>
</div>
你应该使用类:
<div id="content">
<div class="i1 card face"></div>
<div class="i2 card face"></div>
<div class="i1 card face"></div>
<div class="i2 card face"></div>
</div>
我查看了您的代码并在此处发布了一个工作版本 正如上一篇文章所指出的,您要确保您的元素具有唯一的 ID,否则在尝试定位它们时会遇到问题。所以是这样的:
<div id="content">
<div id="i1" class="card face" cardFace="image1"></div>
<div id="i2" class="card face" cardFace="image2"></div>
<div id="i3" class="card face" cardFace="image1"></div>
<div id="i4" class="card face" cardFace="image2"></div>
</div>
我更新了您的 CSS 和代码中的逻辑以使用这些 div。代码现在所做的是在初始元素上单击它保存它没有变量的卡片面,然后将 div 设置为具有一个返回类和一个在第一个动画完成后代表图像的类
var myCardface = $(this).attr("cardFace");
...
//Toggle card back status
$(this).toggleClass('back');
// Set the image to be shown
$(this).toggleClass('back_'+myCardface);
在第二个动画结束时,代码现在查找所有显示背面的卡片(不包括当前卡片)并检查它们是否具有相同的“cardFace”值。如果它们都标记为完成.
//Check for other open cards having the same cardFace value
$("#content").find(".back").not("#"+$(this).attr("id")).each(function(index){
if(myCardface == $(this).attr("cardFace")){
matchFound = true;
$(this).toggleClass('done');
}
if(matchFound == true){
$(this).toggleClass('done');
}
如果背面已打开两张卡片,则代码会将它们翻转回来,以免它们保持打开状态。
var unmatchedCards = $('.back:not(.done)').length
//Reset the cards
if(unmatchedCards == 2){
$('.back:not(.done)').each(function(){
$(this).animate({
rotateY: "+=" + (Math.PI) / 2
}, 500, function() {
//Toggle card back status
$(this).toggleClass('back');
// Set the image to be shown
$(this).toggleClass('back_'+$(this).attr("cardFace"));
}).animate({
rotateY: "+=" + (Math.PI) / 2
}, 500);
});
}
让我知道这是否有帮助。