您可以通过下面的 github 页面链接访问完整代码。 Link
在 HTML 代码中看起来像这样。
<ul class="deck">
<li class="card">
<i class="fa fa-diamond"></i>
</li>
<li class="card">
<i class="fa fa-paper-plane-o"></i>
</li>
<li class="card">
<i class="fa fa-anchor"></i>
</li>
<li class="card">
<i class="fa fa-bolt"></i>
</li>
<li class="card">
<i class="fa fa-cube"></i>
</li>
<li class="card">
<i class="fa fa-anchor"></i>
</li>
<li class="card">
<i class="fa fa-leaf"></i>
</li>
<li class="card">
<i class="fa fa-bicycle"></i>
</li>
<li class="card">
<i class="fa fa-diamond"></i>
</li>
<li class="card">
<i class="fa fa-bomb"></i>
</li>
<li class="card">
<i class="fa fa-leaf"></i>
</li>
<li class="card">
<i class="fa fa-bomb"></i>
</li>
<li class="card">
<i class="fa fa-bolt"></i>
</li>
<li class="card">
<i class="fa fa-bicycle"></i>
</li>
<li class="card">
<i class="fa fa-paper-plane-o"></i>
</li>
<li class="card">
<i class="fa fa-cube"></i>
</li>
JavaScript代码是这样的。
$(document).ready(function () {
$('.card').click(function () {
// Card Open
$(this).addClass("open show");
// Save First Click i element className
let firstclick = ($(this).children('.fa'));
console.log(firstclick);
// Save Second Click i element className
let secondclick = ($(this).children('.fa'));
console.log(secondclick);
// compare first click element and second element to match card
if (firstclick === secondclick) {
// if match each other change card class to "card match"
$(this).removeClass("open show");
$(this).addClass("match")
} else {
// if not match each other close card after 2 seconds.
let ele = $(this);
setTimeout(function () {
ele.removeClass("open show");
}, 2000);
}
})
});
正如你所看到的我的评论。当我单击 li 元素时,检查 li 元素内部的 i 标记并将其保存到 firstclick 变量中。和第二次点击也一样。并相互比较,如果匹配,则将类别更改为“卡片匹配”,如果不匹配,则 2 秒后应更改“卡片”类别以关闭卡片。
但我有一些问题如何保存第一次点击和第二次点击 在我的 console.log 中,当我单击 li 元素时,它只保存相同的变量。
最佳答案
is it because everytime you click $(this) will select your clicked element so it does firstclick, secondclick get same value order to avoid this i am using seq controller for logic as you can see below
$(document).ready(function() {
var sequenceController = 1,
firstclick, secondclick;
$('.card').click(function() {
// Card Open
$(this).addClass("open show");
switch (sequenceController) {
case 1:
firstclick = ($(this).children('.fa').attr('class'));
sequenceController++;
break;
case 2:
secondclick = ($(this).children('.fa').attr('class'));
sequenceController--;
if (firstclick == secondclick) {
$('.open.show').removeClass("open show").addClass("match");
alert('matched')
} else {
$('.open.show').removeClass("open show")
firstclick = '1';
secondclick = '2';
alert('not matched')
}
break;
}
})
});
关于javascript - jQuery 多次点击事件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51816898/