防止('点击')被调用两次

时间:2015-12-11 18:48:25

标签: jquery

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

如果多次调用foo,则会多次添加单击处理程序,从而导致错误行为。

你怎么阻止这个?

3 个答案:

答案 0 :(得分:4)

您可以使用var string = 'sender=11&receiver=2&subject=3&message=4' var string2 = 'sender=AOFJOIA&receiver=p2308u48302rf0&subject=(@#UROJ)(J#OFN:&message=aoefhoa348!!!'; var regex = /([^?=&]+)(=([^&]*))?/ig; var eachMatche = string.match(regex); for (var i = 0; i < eachMatche.length; i++) { snippet.log(eachMatche[i]); snippet.log('First : '+eachMatche[i].replace(regex,'$1')); snippet.log('Second : '+eachMatche[i].replace(regex,'$3')); } var eachMatche = string2.match(regex); for (var i = 0; i < eachMatche.length; i++) { snippet.log(eachMatche[i]); snippet.log('First : '+eachMatche[i].replace(regex,'$1')); snippet.log('Second : '+eachMatche[i].replace(regex,'$3')); }只拨打一次电话:

  

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

<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

JQuery - .one()

答案 1 :(得分:2)

如果您只想让处理程序存在一次,请使用echo

$.fn.one

来自the documentation

  

.one()方法与.on()完​​全相同,只是处理程序在第一次调用后未绑定。

这就是说,我鼓励你考虑是否应该在多次调用的方法中绑定一个处理程序。事实上,这可能是您需要解决的更大问题。

答案 2 :(得分:2)

你可以这样做。

function foo() {
  bar.off('click');

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