2017-01-17 5 views
0

私はチック - タック - トゥーゲームを作っていますが、クリック後にボタンをクリック解除できないようにする方法を知りたいと思います。ここ は、ゲームフィールドです:使用後にクリック機能を解除する

<div id="gamefield"> 
    <table border="0"> 
     <tr> 
      <td><img alt="" title="" src="img/empty.jpg" /></td> 
      <td><img alt="" title="" src="img/empty.jpg" /></td> 
      <td><img alt="" title="" src="img/empty.jpg" /></td> 
     </tr> 
     <tr> 
      <td><img alt="" title="" src="img/empty.jpg" /></td> 
      <td><img alt="" title="" src="img/empty.jpg" /></td> 
      <td><img alt="" title="" src="img/empty.jpg" /></td> 
     </tr> 
     <tr> 
      <td><img alt="" title="" src="img/empty.jpg" /></td> 
      <td><img alt="" title="" src="img/empty.jpg" /></td> 
      <td><img alt="" title="" src="img/empty.jpg" /></td> 
     </tr> 
    </table> 
</div> 

これはrandomstart機能である:

var randomStart = Math.floor(Math.random() * 2); 

これはgamefieldするための機能である:

$("#gamefieldtr td").click(function() { 
    if ($(".game-button").html() == "Start spel") { 
     alert("you can't start"); 
    } else { 
     if(randomStart == 0){ 
      var val = $(this).children().attr('src', 'img/cross.jpg'); 
      randomStart = 1; 
      $("#playerTurn").html("1"); 
      $("#turnImg").attr("src", "img/circle.jpg"); 
     } 
     else { 
      var val = $(this).children().attr('src', 'img/circle.jpg'); 
      randomStart = 0; 
      $("#playerTurn").html("0"); 
      $("#turnImg").attr("src", "img/cross.jpg"); 
      $('src', 'img/circle.jpg').unbind("click"); 
     } 
    } 
}); 
+0

の可能性のある重複[jQueryの中にイベントハンドラを削除するための最良の方法?](http://stackoverflow.com/questions/209029/best-way-to-remove-an-event-handler- in-jquery) – ppasler

+0

ボタンでクラスをクリックしてマークし、ボタンがクラスを指しているときにイベントハンドラでfalseを返しますか? – tmslnz

答えて

4

ジャスト(jQueryのone()代わりにクリックのを使用します)を使用してイベントハンドラを追加します。

.one(イベント[データ]、ハンドラー)戻り値:jQueryの

説明:要素のイベントにハンドラを接続します。ハンドラは、各イベントタイプごとに最大で1回実行されます。

バージョンが追加:1(で追加ハンドラ)が自動的に一旦除去され

$('#gamefieldtr td').one('click', function (event) { 
    // your logic here 
}) 

:1.1.one(イベント[データ]、ハンドラー)

はここでコードは次のようになります方法です彼らは誘発されたので、あなたはそれを自分で行う必要はありません。

0

あなたがイベントのバインドを解除したい場合は機能.off()はjqueryのであり

.off()

.off(イベント[セレクタ] [ハンドラ])

説明: イベントハンドラを削除します。

$("#gamefieldtr td").click(function() { 

    // PUT THE LINE BELOW WHERE YOU WANT TO UNBIND YOUR CLICK EVENT OF YOUR TR 
    $("td").off("click", "#gamefieldtr"); 

    if ($(".game-button").html() == "Start spel") { 
     alert("you can't start"); 
    } else { 
     if(randomStart == 0){ 
      var val = $(this).children().attr('src', 'img/cross.jpg'); 
      randomStart = 1; 
      $("#playerTurn").html("1"); 
      $("#turnImg").attr("src", "img/circle.jpg"); 
     } 
     else { 
      var val = $(this).children().attr('src', 'img/circle.jpg'); 
      randomStart = 0; 
      $("#playerTurn").html("0"); 
      $("#turnImg").attr("src", "img/cross.jpg"); 
      $('src', 'img/circle.jpg').unbind("click"); 
     } 
    } 
}); 
関連する問題