我正在构建一个井字游戏,下面是我设置的代码,让playerX标记一个框,然后切换到播放器O. 使用$ .on('点击')来监听点击了哪个框。 我得到了我认为的事件冒泡。 每次单击一个框时,下一个框会产生指数反应,依此类推。 我尝试了e.stopPropogation,但它阻止了下一步行动。
如何阻止反应泛滥?
function playX () {
$box.on('click', function (e) {
console.log(this);
var a = e.target.dataset.index;
b[a] = 'X';
$(this).text('X');
playO();
})
}
function playO() {
$box.on('click', function (e) {
console.log(this);
var b = e.target.dataset.index;
b[b] = 'O';
$(this).text('O');
playX();
})
}
这是所有相关链接 http://jsfiddle.net/shallak/fdctcvdt/
(我也使用了css框架,Materialise)
答案 0 :(得分:0)
每次调用playX或playO时,你都不应该绑定事件..每次注册另一个处理程序,导致"指数"你正在经历的行为。解决问题的最快方法是使用" $ box.one(...)"而不是" $ box.on(...)" (这将绑定事件一次并清除处理程序)
无论如何,我冒昧地改进了你的实施:
\n