Jquery 防止对(';单击';)调用两次

Jquery 防止对(';单击';)调用两次,jquery,Jquery,如果多次调用foo,那么会多次添加click处理程序,从而导致错误的行为 如何停止此操作?如果只希望处理程序存在一次单击,请使用$.fn.one: function foo() { bar.on('click', function (evt) { console.log("click"); } } 发件人: .one()方法与.on()相同,只是处理程序在第一次调用后被解除绑定 这句话,我鼓励你考虑是否应该在一个被称为多次的方法中绑定一个处理程序。实际上,这可能是您需要解决的一

如果多次调用foo,那么会多次添加click处理程序,从而导致错误的行为


如何停止此操作?

如果只希望处理程序存在一次单击,请使用
$.fn.one

function foo() {
  bar.on('click', function (evt) {
    console.log("click");
  }
}
发件人:

.one()方法与.on()相同,只是处理程序在第一次调用后被解除绑定


这句话,我鼓励你考虑是否应该在一个被称为多次的方法中绑定一个处理程序。实际上,这可能是您需要解决的一个更大的问题。

如果您只希望处理程序只存在一次单击,请使用
$.fn.one

function foo() {
  bar.on('click', function (evt) {
    console.log("click");
  }
}
发件人:

.one()方法与.on()相同,只是处理程序在第一次调用后被解除绑定

这句话,我鼓励你考虑是否应该在一个被称为多次的方法中绑定一个处理程序。实际上,这可能是您需要解决的更大问题。

您可以使用
.one()
只调用一次:

将处理程序附加到元素的事件。处理程序被执行 每个事件类型的每个元素最多一次

您可以使用
.one()
只调用一次:

将处理程序附加到元素的事件。处理程序被执行 每个事件类型的每个元素最多一次


您可以像下面这样做

function foo() {
  bar.one('click', function (evt) {
    console.log("click");
  }
}

你可以像下面这样做

function foo() {
  bar.one('click', function (evt) {
    console.log("click");
  }
}

很简单,你从不把事件处理程序放在被多次调用的函数中。@adeneo谢谢你夸夸其谈的回答。有时它是必需的。不,事实并非如此,将事件绑定到函数之外,并使用jQuery的数据或类似的东西来知道事件处理程序应该何时启动。如果事件是从API绑定到外部对象的,那么为了清楚起见,您是希望事件处理程序只在单击一次后启动,还是只绑定一次,但是,所有的点击都会触发。很简单,你永远不会把事件处理程序放在被多次调用的函数中。@adeneo感谢你虚张声势的回答。有时它是必需的。不,事实并非如此,将事件绑定到函数之外,并使用jQuery的数据或类似的东西来知道事件处理程序应该何时启动。如果事件是从API绑定到外部对象的,那么为了清楚起见,您是希望事件处理程序只在单击一次后启动,还是只绑定一次,但所有的点击都会开火。