JQuery事件冒泡

时间:2015-09-27 22:10:05

标签: javascript jquery event-bubbling

我正在构建一个井字游戏,下面是我设置的代码,让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)

1 个答案:

答案 0 :(得分:0)

每次调用playX或playO时,你都不应该绑定事件..每次注册另一个处理程序,导致"指数"你正在经历的行为。解决问题的最快方法是使用" $ box.one(...)"而不是" $ box.on(...)" (这将绑定事件一次并清除处理程序)

无论如何,我冒昧地改进了你的实施:

   \n