Javascript 函数中的事件侦听器存储在变量中

Javascript 函数中的事件侦听器存储在变量中,javascript,function,Javascript,Function,嗯,我的问题有点傻,我知道,但请试着理解。 我现在的处境是,我需要实现如下内容: var func1=function(){ $(“#btn1”)。在(“单击”,函数(){ 控制台日志(“从功能1按钮1”); }) $(“#btn2”)。在(“单击”,函数(){ 控制台日志(“从功能1按钮2”); }) } var func2=函数(){ $(“#btn1”)。在(“单击”,函数(){ 控制台日志(“从功能2按钮1”); }) $(“#btn2”)。在(“单击”,函数(){ 控制台日志(“从功

嗯,我的问题有点傻,我知道,但请试着理解。 我现在的处境是,我需要实现如下内容:

var func1=function(){
$(“#btn1”)。在(“单击”,函数(){
控制台日志(“从功能1按钮1”);
})
$(“#btn2”)。在(“单击”,函数(){
控制台日志(“从功能1按钮2”);
})
}
var func2=函数(){
$(“#btn1”)。在(“单击”,函数(){
控制台日志(“从功能2按钮1”);
})
$(“#btn2”)。在(“单击”,函数(){
控制台日志(“从功能2按钮2”);
})
}
var-fn;
函数更改fn1(){
console.log(“功能更改为1”);
fn=func1;
fn();
}
函数更改fn2(){
console.log(“功能更改为2”);
fn=func2;
fn();
}

将函数更改为1
将函数更改为2
按钮1

按钮2
您正在多次添加事件侦听器。每次运行一个函数时,它都会重新添加事件侦听器,导致回调多次触发。在使用jQuery的
.off()
方法添加单击事件侦听器之前,可以先删除它们:

var func1=function(){
$('button')。关闭('click');
$(“#btn1”)。在(“单击”,函数(){
控制台日志(“从功能1按钮1”);
})
$(“#btn2”)。在(“单击”,函数(){
控制台日志(“从功能1按钮2”);
})
}
var func2=函数(){
$('button').off('click');//删除按钮上的所有click事件侦听器
$(“#btn1”)。在(“单击”,函数(){
控制台日志(“从功能2按钮1”);
})
$(“#btn2”)。在(“单击”,函数(){
控制台日志(“从功能2按钮2”);
})
}
var-fn;
函数更改fn1(){
console.log(“功能更改为1”);
fn=func1;
fn();
}
函数更改fn2(){
console.log(“功能更改为2”);
fn=func2;
fn();
}

将函数更改为1
将函数更改为2
按钮1

按钮2
是的,我试过类似的方法。如果没有其他更简单的方法,这是我的选择之一。@Francisaskquestion我添加了另一种方法,您可以处理相同的问题。它更易于扩展和管理,更易于管理。谢谢,我会把这个放在我的选项上