Javascript 让一个按钮绑定另一个按钮?

Javascript 让一个按钮绑定另一个按钮?,javascript,jquery,Javascript,Jquery,我试图在按下重置按钮时绑定开始按钮。当按下“开始”按钮时,它将解除其单击事件的绑定。但是我希望它能够在单击重置按钮时绑定开始按钮的单击事件,以便再次按下。下面的按钮不起作用。有什么想法吗 //Start $("#start").bind("click", function(){ $("#start").unbind('click') addCompMove(); playerMove(); }); $("#reset").bind("click", function(){ $("

我试图在按下重置按钮时绑定开始按钮。当按下“开始”按钮时,它将解除其单击事件的绑定。但是我希望它能够在单击重置按钮时绑定开始按钮的单击事件,以便再次按下。下面的按钮不起作用。有什么想法吗

//Start
$("#start").bind("click", function(){
  $("#start").unbind('click')
  addCompMove();
  playerMove();
});
$("#reset").bind("click", function(){
  $("#start").bind('click');
  comp.length = 0;
  player.length = 0;
  hoverCount = 0;
  score = 0;
  console.log(comp)
}); 

我建议创建一个执行启动操作的函数。
这样可以更轻松地将操作重新绑定到click事件,而无需每次都重新声明它们

函数startActions(){
$(this.unbind('click');
addCompMove();
playerMove();
}
$(“#开始”).bind(“单击”,开始按钮);
$(“#重置”).bind(“单击”,函数(){
$(“#开始”).bind(“单击”,开始按钮);
复合长度=0;
player.length=0;
hoverCount=0;
得分=0;
控制台日志(comp);
});

编辑 另外,在您的“重置”处理程序中,我建议在重新绑定click事件之前先解除它的绑定。如果连续多次单击“重置”按钮,这将防止绑定多个单击事件

$("#start").unbind('click').bind("click", startActions);
演示如下:

var$output=jQuery('div#output');
函数startActions(){
$(this.unbind('click');
$output.html($output.html()+“
”+“已启动”); } $(“#开始”).bind(“单击”,开始按钮); $(“#重置”).bind(“单击”,函数(){ $(“开始”)。解除绑定(“单击”)。绑定(“单击”,开始按钮); $output.empty(); });

开始
重置

我建议创建一个执行启动操作的函数。
这样可以更轻松地将操作重新绑定到click事件,而无需每次都重新声明它们

函数startActions(){
$(this.unbind('click');
addCompMove();
playerMove();
}
$(“#开始”).bind(“单击”,开始按钮);
$(“#重置”).bind(“单击”,函数(){
$(“#开始”).bind(“单击”,开始按钮);
复合长度=0;
player.length=0;
hoverCount=0;
得分=0;
控制台日志(comp);
});

编辑 另外,在您的“重置”处理程序中,我建议在重新绑定click事件之前先解除它的绑定。如果连续多次单击“重置”按钮,这将防止绑定多个单击事件

$("#start").unbind('click').bind("click", startActions);
演示如下:

var$output=jQuery('div#output');
函数startActions(){
$(this.unbind('click');
$output.html($output.html()+“
”+“已启动”); } $(“#开始”).bind(“单击”,开始按钮); $(“#重置”).bind(“单击”,函数(){ $(“开始”)。解除绑定(“单击”)。绑定(“单击”,开始按钮); $output.empty(); });

开始
重置

您希望拉出您试图绑定单击的函数,以便根据需要添加和删除它

var doMove = function(){
  $("#start").unbind('click');
  addCompMove();
  playerMove();
}

$("#start").bind("click", doMove); // bind at start
$("#reset").bind("click", function(){
  $("#start").bind('click', doMove); // bind again
  comp.length = 0;
  player.length = 0;
  hoverCount = 0;
  score = 0;
  console.log(comp);
}); 

您希望拉出要将单击绑定到的函数,以便可以根据需要添加和删除它

var doMove = function(){
  $("#start").unbind('click');
  addCompMove();
  playerMove();
}

$("#start").bind("click", doMove); // bind at start
$("#reset").bind("click", function(){
  $("#start").bind('click', doMove); // bind again
  comp.length = 0;
  player.length = 0;
  hoverCount = 0;
  score = 0;
  console.log(comp);
}); 

也许这样更有效

    var started = false;
    $("#start").bind("click", function(){
      if(!started){
      addCompMove();
      playerMove();
      started = true; 
      }
    });
    $("#reset").bind("click", function(){
      if(started){
      comp.length = 0;
      player.length = 0;
      hoverCount = 0;
      score = 0;
      console.log(comp); 
      started = false; 
     }
}); 

也许这样更有效

    var started = false;
    $("#start").bind("click", function(){
      if(!started){
      addCompMove();
      playerMove();
      started = true; 
      }
    });
    $("#reset").bind("click", function(){
      if(started){
      comp.length = 0;
      player.length = 0;
      hoverCount = 0;
      score = 0;
      console.log(comp); 
      started = false; 
     }
}); 
on()
off()
是自版本1.7以来jQuery中绑定和解除绑定事件侦听器的首选方法

您应该声明匿名函数,而不是使用匿名函数。它更模块化,更容易理解,让你做你想做的事情

$("#start").on("click", startClicked);

function startClicked(e){
    $(this).off("click");
    $("#reset").on("click", resetClicked);
    // other start stuff
}

function resetClicked(e){
    $(this).off("click");
    $("#start").on("click", startClicked);
    // other reset stuff
}
其他一些答案的问题是,您很容易会得到一个事件侦听器的多个实例堆叠在一起,所有实例都是通过单击触发的。如果您多次单击“重置”,您将得到许多您不想要的“开始”事件侦听器的绑定。根据所需的功能,确保一次只允许一个按钮连接一个侦听器,或者取消绑定所有以前的侦听器,并仅重新绑定所需的侦听器。

on()
off()
是自版本1.7以来jQuery中绑定和取消绑定事件侦听器的首选方法

您应该声明匿名函数,而不是使用匿名函数。它更模块化,更容易理解,让你做你想做的事情

$("#start").on("click", startClicked);

function startClicked(e){
    $(this).off("click");
    $("#reset").on("click", resetClicked);
    // other start stuff
}

function resetClicked(e){
    $(this).off("click");
    $("#start").on("click", startClicked);
    // other reset stuff
}

其他一些答案的问题是,您很容易会得到一个事件侦听器的多个实例堆叠在一起,所有实例都是通过单击触发的。如果您多次单击“重置”,您将得到许多您不想要的“开始”事件侦听器的绑定。根据所需的功能,确保一次只允许一个按钮连接一个侦听器,或者取消绑定所有以前的侦听器,并仅重新绑定所需的侦听器。

使用$('#xyz).one('click',function(){}}而不是绑定解除绑定。使用one将在触发一次后自动解除绑定,因此您只需担心将.one应用到下一个控件。

使用$('#xyz).one('click',function(){}}而不是绑定解除绑定。使用一个将在触发一次后自动解除绑定,因此您只需担心将一个应用到下一个控件。

编辑说您丢失了一些分号编辑说您丢失了一些分号Tanks mate…这帮了大忙。感谢模块化提示,也感谢mate…这帮了大忙。Appr将模块化提示也关联起来