js点击事件

clipboard.png

点击5次box2后,点击一次box1,结果console了5次a,怎么才能跟外面点击次数无关

阅读 3.3k
6 个回答

执行方法s()之前,先取消绑定在#box1上的点击事件。eg:$('#box1').off('click');

("#box1").click(function(){})改为("#box1").unbind("click").click(function(){}),绑定点击事件前先解除绑定的事件

因为box1绑定了5次click事件,可以先移除box1的点击事件,再绑定

是因为绑定了5个点击函数,只是这5个函数的内容时一样的而已

    $("#box2").click(function(){
        console.log('b');
        s();
     });

     function s(){
        $('#box1').unbind("click");
         $("#box1").click(function(){
            console.log('a');
        });
     }

可以unbind在调用的时候先解除
也可以改造一下s函数

function s(){
    if(!s.flag){
        $('#box1').click(function(){
            console.log('a')
        })
        s.flag = true
    }
}

如果格式不能变,二楼可以解决你的问题,你可以给出你想要实现的效果,大家应该会给你一些解决思路,从你的代码来看,不知道你应对的是哪种场景

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题