创建更高阶函数以比较值

时间:2016-06-05 16:41:08

标签: javascript jquery compare higher-order-functions

所以我的任务是创建一个记忆卡游戏。我们需要使用jQuery或JavaScript来翻转卡片,比较它们,然后取消它们。

到目前为止,我最多可以使用两张卡进行翻转,但是我无法让它们取消翻转或测试图标匹配。

我认为我需要使用更高阶的功能,但我不知道如何编写它(特别是因为我真的很想比较值来测试卡是否匹配)

到目前为止,这是我的jQuery内容:

var track = 0;

$('li').click (function(){
track++
if (track === 1){
  $(this).addClass('flipped')
  $(this).children().css('opacity', '1');
  console.log(track);
  }

  else if (track === 2){
  $(this).addClass('flipped')
  $(this).children().css('opacity', '1');
  console.log(track)
  }
});


$('li').click (function(){

    if ($(this).val() == ($(cardFlip).val ()){
    $(this).removeClass('flipped')
    $(this).addClass('permanent');
}
  else {
    $(this).removeClass('flipped');
    $(this).childre().css('opacity', '0');
  }
});

我有相应的CSS课程,这些课程被翻转为永久性的',以及卡片的起点和图标。

JS小提琴 https://jsfiddle.net/9b2038zx/

1 个答案:

答案 0 :(得分:0)

您只需要绑定一个点击事件。

var track = 0;
var flippedExists = false;
var flipped;
$('li').click (function(){
    track++
    if (flippedExists){
         if ($(this).val() == flipped.val()){   //success
            $(this).removeClass('flipped')
            $(this).addClass('permanent');
            flipped.removeClass('flipped')
            flipped.addClass('permanent');
        }else {                                 //fail
            flipped.removeClass('flipped');
            flipped.children().css('opacity', '0');
        }
        flippedExists = false;
    }else{                                      //first flip
        flippedExists = true;
        flipped = $(this);
        $(this).addClass('flipped')
        $(this).children().css('opacity', '1');
    }
});