前提・実現したいこと
今jQueryで神経衰弱を作っていて、カードを選択してカードの番号が一致しなければカードを「?」にするのですが、
そのときに1秒間他のカードをクリックできないようにしたいです。
アドバイスのほどよろしくお願いします。
発生している問題・エラーメッセージ
今はカードが一致せずに「?」になる時、間髪入れずに次のカードが選択できます。
該当のソースコード
<!doctype html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="format-detection" content="telephone=no"> <title></title> <link rel="stylesheet" href="css/reset.css"> <link rel="stylesheet" href="css/base.css"> <link rel="stylesheet" href="css/style.css"> </head> <body> <ul class="lists clearfix"></ul> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript"> //カードを開く function open($card){ $card.css('pointer-events','none').text($card.data('num')); } // カードを閉じる var returnSec = 500; function close($card){ $card.css('pointer-events','').text('?'); } // カードを比較 function compare($card){ var card1 = $('.first'); var card2 = $card; var num = 'num'; var firstNum = card1.data(num); var secondNum = card2.data(num); var unopened = 'unopened'; var first = 'first'; var returnSec = 1000; if(card1.length == 0){ $card.addClass(first); } else { card1.removeClass(first); if(firstNum == secondNum){ card1.removeClass(unopened); card2.removeClass(unopened); if($('.' + unopened).length == 0){ alert('Game Over'); } } else { close(card1); close(card2); //今はここにクリック制御のコードを書いています $('.lists li').css('pointer-events','none'); setTimeout(function(){ $('.lists li').css('pointer-events',''); },returnSec); } } } $(function(){ var cardNum = []; var totalCard = 16; for (var i = 1; i <= totalCard/2; i++){ cardNum.push(i,i); } cardNum.sort(function(){ return Math.random() - Math.random(); }).map(function(num){ return "<li class='unopened' data-num='" + num + "'>?</li>"; }).forEach(function(element){ $(".lists").append(element); }); $('.lists li').click(function(){ var $openedCard = $(this); open($openedCard); setTimeout(function(){ compare($openedCard); }, returnSec); }); }); </script> </body> </html>
回答3件
あなたの回答
tips
プレビュー