首页 > 怎么实现第一次点击的时候触发一个函数,然后之后点击都触发另一个函数呢

怎么实现第一次点击的时候触发一个函数,然后之后点击都触发另一个函数呢

怎么实现第一次点击的时候触发一个函数,然后之后点击都触发另一个函数呢


提供一个简单的思路供参考:
你可以定义一个总的开关标志,然后再由由一个统一的调度函数去调度两个函数,类似这样:
var st = true;
function foo(){

if(st ){
    fun1();
}else{
    fun2();
}

}

function fun1(){

st  = false;

}


设置一个全局变量

var flag=true;
$('#test').on('click', function () {
     if(flag){
         flag=false;
         函数1
     } else{
         函数2
     }
 });

想到两个解决方案:

1.既然是两个处理函数,应该是不同的状态,可以用class区分开,比如一开始的状态是.button-off,后面的状态是.button-on,给这两个class分别绑定事件,并且在.button-off事件处理函数中把class切换至.button-on。感觉这样逻辑显得清晰一些。

2.如果使用jQuery的话,方法one可以绑定一次事件,在事件处理函数中再用on绑定正常事件,这样以后就都是执行on绑定的事件处理函数了。


写个立即执行函数呗


var count = 0
function onClick(){
  count ++
  if (count >1){
     //TODO
  }else {
     //TODO
  }
}

可以在第一个事件中重新给这个元素绑定事件


不需要任何变量的方法:

sth.onclick = function() {
    fn1();
    sth.onclick = fn2;
};

仅供参考。


加个判断啊!


或者你先绑定一个click,在这个click里面写你的第一个函数。

然后移除掉click的绑定,再绑定你的第二个函数。


function bind (func1, func2) {
    let func = null
    return function () {
        (!func ? (func = func2, func1) : func).apply(this, arguments)
    }
}

https://jsfiddle.net/hsfzxjy/csvyg7a4/4/

【热门文章】
【热门文章】