javascript - jQuery 多次点击事件检查

标签 javascript jquery jquery-click-event

您可以通过下面的 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/

相关文章:

javascript - 如何在 React js 中为来自 api 的动态表单字段设置一个通用的 onchange?

Jquery - 如何检查隐藏 DIV 中的子级是否可见?

javascript - 未从服务器检索 jQuery 文件

jquery - CSS/JQuery 边框

jquery - 我如何应用 jQuery.click 来自动点击元素的第一级?

javascript - 在 "tap, click"事件触发两次。如何避免呢?

javascript - 从 SQLite 检索图像并在 HTML 页面上显示图像 - JavaScript

javascript - for 循环应该如何等待它内部的函数完成在 angularjs 中的执行?

javascript - 为什么获取nodeValue时,即使显示正确,仍然返回null?

jquery - 单击网站任何页面上的任意位置都会导致 jquery .apply 错误,为什么?