怎么实现第一次点击的时候触发一个函数,然后之后点击都触发另一个函数呢
提供一个简单的思路供参考:
你可以定义一个总的开关标志,然后再由由一个统一的调度函数去调度两个函数,类似这样:
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/