Demo jQuery 練習-Tic Tac Toe- Demo 
1. Introduction 介紹 這是 jQuery 操作 click 事件搭配新增 class 實現圈叉遊戲。
需兩方輪流操作點擊後新增 class、插入兩方字串來顯示’o’與’x’ 
判定兩方誰達成連線 
須判定和局、已觸發過點擊事件的欄位 
 
2. 功能 先宣告圈與叉的變數字串、計算雙方輪流操作的變數等,主要都是用if、else if、else來判斷。o、x、還有disabled以點擊過的 class 刪除,並將全部欄位的文字清空、計數 turns 歸 0。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <div  id ="container" >   <header >      <h1 > Tic Tac Toe</h1 >    </header >    <ul  id ="board" >      <li  id ="spot1" > +</li >      <li  id ="spot2" > +</li >      <li  id ="spot3" > +</li >      <li  id ="spot4" > +</li >      <li  id ="spot5" > +</li >      <li  id ="spot6" > +</li >      <li  id ="spot7" > +</li >      <li  id ="spot8" > +</li >      <li  id ="spot9" > +</li >    </ul >    <div  class ="clearfix" > </div >    <footer >      <button  id ="reset" > Reset Game</button >    </footer >  </div > 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 $(document ).ready(function (   var  x = "x" ;   var  o = "o" ;   var  turns = 0 ;      var  spot1 = $("#spot1" );   var  spot2 = $("#spot2" );   var  spot3 = $("#spot3" );   var  spot4 = $("#spot4" );   var  spot5 = $("#spot5" );   var  spot6 = $("#spot6" );   var  spot7 = $("#spot7" );   var  spot8 = $("#spot8" );   var  spot9 = $("#spot9" );   $("#board li" ).on("click" , function (     if  (       (spot1.hasClass("o" ) && spot2.hasClass("o" ) && spot3.hasClass("o" )) ||       (spot4.hasClass("o" ) && spot5.hasClass("o" ) && spot6.hasClass("o" )) ||       (spot7.hasClass("o" ) && spot8.hasClass("o" ) && spot9.hasClass("o" )) ||       (spot1.hasClass("o" ) && spot4.hasClass("o" ) && spot7.hasClass("o" )) ||       (spot2.hasClass("o" ) && spot5.hasClass("o" ) && spot8.hasClass("o" )) ||       (spot3.hasClass("o" ) && spot6.hasClass("o" ) && spot9.hasClass("o" )) ||       (spot3.hasClass("o" ) && spot5.hasClass("o" ) && spot7.hasClass("o" )) ||       (spot1.hasClass("o" ) && spot5.hasClass("o" ) && spot9.hasClass("o" ))     ) {       alert("Winner: O" );       $("#board li" ).text("+" );       $("#board li" ).removeClass("disable" );       $("#board li" ).removeClass("o" );       $("#board li" ).removeClass("x" );     } else  if  ( '同上面' o'的判斷式...'  ) {       alert("Winner: X" );          } }); }); 
和局判定,一樣需要 reset。
1 2 3 4 5 6 7 8 else  if  (turns == 9 ) {    alert("Tie Game" );     $("#board li" ).text("+" );     $("#board li" ).removeClass("disable" );     $("#board li" ).removeClass("o" );     $("#board li" ).removeClass("x" );     turns = 0 ; } 
點擊過的欄位,如果再去點擊則不能執行
1 2 3 else  if  ($(this ).hasClass("disable" )) {    alert("This spot is already filled" ); } 
輪流操作,點擊後新增 class,利用餘數除以 2 計算雙方操作,判斷成立後新增 class,每一次行為後都要判定是否連線。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 else  if  (turns % 2  == 0 ) {    turns++;     $(this ).text(o);     $(this ).addClass("disable o" );     if  ('o連線判定' ) {     alert("Winner: O" );     turns = 0 ;     } } else  {     turns++;     $(this ).text(x);     $(this ).addClass("disable x" );     if  ('x連線判定' ) {     alert("Winner: X" );     turns = 0 ;     } } 
這邊則是獨立的 reset 按鈕,讓遊戲隨時可以重新開始。
1 2 3 4 5 6 7 8 $("#reset" ).on("click" , function (   $("#board li" ).text("+" );   $("#board li" ).removeClass("disable" );   $("#board li" ).removeClass("o" );   $("#board li" ).removeClass("x" );   turns = 0 ; });