2017-01-17 11 views
0

Ich mache ein Tic-Tac-Toe-Spiel und ich möchte jetzt wissen, wie ich einen Button nach einem Klick unclickable machen kann. hier ist das Spielfeld:lösen Sie eine Klick-Funktion nach der Verwendung

<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> 

ist dies die randomstart Funktion:

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

dies ist die Funktion für das Spielfeld:

$("#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

Mögliche Duplikat [Beste Art und Weise einen Event-Handler in jQuery zu entfernen?] (Http://stackoverflow.com/questions/209029/best-way-to-remove-an-event-handler- in-jquery) – ppasler

+0

Markieren Sie die Schaltfläche als angeklickt mit einer Klasse und geben Sie false für den Event-Handler zurück, wenn die Schaltfläche die Klasse hat? – tmslnz

Antwort

4

Nur jQuerys verwenden one() statt klicken () zum Hinzufügen der Ereignishandler:

.one (Ereignisse [Daten], Handler) Gibt: jQuery

Beschreibung: einen Handler auf ein Ereignis für die Elemente anbringen. Der Handler wird maximal einmal pro Element pro Ereignistyp ausgeführt.

Version hinzugefügt: 1.1.one (Ereignisse [Daten], Handler)

Hier ist, wie der Code aussehen sollte:

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

Handlers aufgenommen mit einem() einmal automatisch entfernt Sie sind ausgelöst worden, also müssen Sie es nicht selbst tun.

0

Wenn Sie ein Ereignis entbinden wollen gibt es die Funktion .off() in jquery

.off()

.off (Ereignisse [Selektor] [, handler])

Beschreibung: Entfernen Sie einen Ereignishandler.

$("#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"); 
     } 
    } 
}); 
Verwandte Themen