<!doctype html>
<html>
<head>
<title> game </title>
<style>
td {
width: 60px;
height: 60px;
text-align: center;
}
.active {
background: red;
}
</style>
</head>
<body>
<table border="1" cellspacing="0">
<tr>
<td>dsde</td>
<td>dsdd</td>
<td>dsdsw</td>
</tr>
<tr>
<td>ds</td>
<td>ds</td>
<td>ds</td>
</tr>
<tr>
<td>ds </td>
<td>ds </td>
<td>ds</td>
</tr>
</table>
<script src="../lib/jquery-2.1.0.min.js"></script>
<script>
function cell(i,j) {
var tr = $("tr").eq(i);
return tr.children("td").eq(j);
}
cell(1,1).addClass('active');
$(".active").on('click',function(){
$(this).removeClass('active');
var i = Math.round(Math.random() * 2);
var j = Math.round(Math.random() * 2);
cell(i,j).addClass('active');
});
</script>
</body>
</html>
为什么addclass之后,active没有绑定click事件。
利用事件委托的写法是
用事件委托的意思是table下面所有叫active的class都触发这个事件,事件绑定在table上面,
而你之前的写法事件绑定在第一个.active上面,后面随机的td没有绑定事件,所以只有第一次生效。
测试地址
http://jsbin.com/heteta/1/edit?html,css,js,output