javascript - .on('click') only works once -
this question has answer here:
i'm trying fill div different color tiles, have html <div id="field">, , following javascript code:
// want field globally accessible  var field; var colors; $(document).ready(function(){  field = [[],[],[],[],[],[],[],[],[]];    colors =["black","yellow","blue","green","grey","brown"];           fillfield();               $(".tile").on('click', function(){ console.log("sfadfd"); var x = this.getattribute("data-x"); var y = this.getattribute("data-y"); console.log("x: "+x+", y: "+y); tileclicked(x,y); });  });  var tileclicked = function(x,y){ console.log(colors[field[y][x]]); field[y][x] = 0; showfield();  };  // displays field neat grid pretty colors var showfield = function(){ console.log("test");  $(".tile").remove();      (var = 0; i<field.length; i++){         (var j = 0; j<10; j++){             var color = colors[field[i][j]];              $("#field").append("<div data-x="+j+" data-y="+i+" class=tile style=background-color:"+color+" ></div>");              } console.log("test3");             } }  // fills empty slots in field var fillfield = function(){     (var = 0; i<field.length; i++){         (var j = 0; j<10; j++){         var next = math.floor(math.random()*5+1);          if(next == field[i][j-1] ){         field[i][j] = math.floor(math.random()*5+1);         }         else { field[i][j] = next;}         }     } showfield(); }   the problem removes , displays tiles once, think has append() , remove(), can't figure out what's wrong
thanks!
use event delegation beacuse remove element(.tile) , add dynamically
$("#field").on('click', '.tile' ,function(){  });      
Comments
Post a Comment