2017-01-17 74 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(),而不是點擊( )添加事件處理程序:

。一(事件[,數據],處理程序)返回值:jQuery的

描述:附加的處理程序,爲元素的事件。處理程序每​​個事件類型每個元素最多執行一次。

版新增:1.1.one(事件[數據],處理程序)

下面的代碼應該怎麼是這樣的:一個(加入

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

處理程序)被自動刪除一次他們已經被觸發了,所以你不必親自去做。

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"); 
     } 
    } 
});