javascript - 使用 JQuery 使一张卡片在打开另一张卡片后关闭

标签 javascript jquery

我正在制作一个内存游戏,方法是用卡片填充 div:

var masks = ["1.jpg", "2.jpg", "3.jpg", "4.jpg", "6.jpg", "7.jpg", "8.jpg", "1.jpg", "2.jpg", "3.jpg", "4.jpg", "6.jpg", "7.jpg", "8.jpg"];

for (var i = 0; i < masks.length; i++) {
  $(".deck").append('<div  class="card"> <img class="card" src="./' + masks[i] + '"/></div>');

}
//Displaying the mask images with a for loop
$(".card").click(function() {

// Show card on click
$(this).find("img").show();

})

});

并且卡片会显示出来,但我想让当您单击一张卡片时它保持打开状态,直到您单击并打开另一张卡片为止,以便两者都保持打开状态,使用 JQuery 执行此操作的最佳和正确方法是什么?

最佳答案

你可以这样做:

var masks = ["1.jpg", "2.jpg", "3.jpg", "4.jpg", "6.jpg", "7.jpg", "8.jpg", "1.jpg", "2.jpg", "3.jpg", "4.jpg", "6.jpg", "7.jpg", "8.jpg"];

//add style style="display: none;" so that when added, images are hidden
for (var i = 0; i < masks.length; i++) {
  $(".deck").append('<div  class="card"> <img class="card" style="display: none;" src="./' + masks[i] + '"/></div>');
}

//Displaying the mask images with a for loop
$(".deck").on('click', '.card', function() {
  var cardVisible = $('.card img:visible').length;       //Get the number of visible img
  if (cardVisible >= 2) $('.card img').hide();           //If 2 or more, hide all

  $(this).find("img").show();                            //Show the image
});
.card {
  width: 100px;
  height: 100px;
  background-color: red;
  margin: 5px;
  float : left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='deck'></div>

关于javascript - 使用 JQuery 使一张卡片在打开另一张卡片后关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49475144/

相关文章:

javascript - 为什么 jQuery.getJSON() 会压扁我的 javascript 字典?

jquery - 如果我的 href 为空,jQuery 地址插件是否可以工作?

javascript - 使用 Javascript 渲染 DB 值

javascript - 在 iPad 上,confirm() 总是错误地停止默认操作

javascript - 使用JS向表单添加输入

php - JavaScript 或 PHP 中的三向合并

javascript - 在循环内创建 refs

javascript - 为什么我的这个 Jquery .post 的回调函数不工作?

javascript - 在合并对象的键中创建值数组

header 中的 jQuery Mobile 下拉菜单不起作用