Javascript 在第二次触发功能按钮后,执行代码两次
我做了一个游戏,我有我不能解决的问题。 我有函数,里面有按钮。单击()。在我第二次执行函数之后,按钮点击执行代码两次,例如,我在这里发布了一些有相同问题的简单代码 单击第一个按钮时,会触发一次警报。当我单击第二个按钮和第一个按钮时,会触发两次警报。我只想触发警报一次。按钮必须保持功能。对不起,英语不好 我也在这儿闲逛Javascript 在第二次触发功能按钮后,执行代码两次,javascript,jquery,Javascript,Jquery,我做了一个游戏,我有我不能解决的问题。 我有函数,里面有按钮。单击()。在我第二次执行函数之后,按钮点击执行代码两次,例如,我在这里发布了一些有相同问题的简单代码 单击第一个按钮时,会触发一次警报。当我单击第二个按钮和第一个按钮时,会触发两次警报。我只想触发警报一次。按钮必须保持功能。对不起,英语不好 我也在这儿闲逛 您需要在绑定之前解除对click事件的绑定 function testf() { $("#1").unbind('click'); $("#1").click(functi
您需要在绑定之前解除对click事件的绑定
function testf() {
$("#1").unbind('click');
$("#1").click(function() {
alert("test");
});
$("#2").unbind('click');
$("#2").click(function() {
testf();
});
}
testf();
不知何故,此函数会将事件绑定两次。在此处更改任何内容都会消除此问题
$(".address_field").each(function(index){
var widget = new AddressFinder.Widget(this, "WR3NUKVGC4Q97FPHBJXL");
这是因为您将事件处理程序创建嵌套在
testf()
中。依次,单击#2
会向每个元素添加另一个单击处理程序。你到底想达到什么目的?我喜欢太空游戏。功能在太空中产生行星和物体。用按钮控制飞船从一个星球跳到另一个星球。访问完所有行星后,您可以跳转到另一个太阳系,当您这样做时,我需要再次调用函数1)unbind()
不推荐使用它。改用off()
。2) OP只是使用了不正确的嵌套事件处理程序模式。如果你能正确地构造它们,就没有必要解开任何东西。谢谢你,伙计,解开在我的游戏中非常有效。你能解释一下为什么使用它是个坏主意吗?@Jac0b这是因为如果UI逻辑设计正确,就没有理由在运行时动态添加/删除单击处理程序。这样做是一个更大的问题的代码气味,应该首先解决,而不是把它作为一个创可贴。
$(".address_field").each(function(index){
var widget = new AddressFinder.Widget(this, "WR3NUKVGC4Q97FPHBJXL");