function foo() {
bar.on('click', function (evt) {
console.log("click");
}
}
如果多次调用foo,则会多次添加单击处理程序,从而导致错误行为。
你怎么阻止这个?
答案 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>
答案 1 :(得分:2)
如果您只想让处理程序存在一次,请使用echo
:
$.fn.one
.one()方法与.on()完全相同,只是处理程序在第一次调用后未绑定。
这就是说,我鼓励你考虑是否应该在多次调用的方法中绑定一个处理程序。事实上,这可能是您需要解决的更大问题。
答案 2 :(得分:2)
你可以这样做。
function foo() {
bar.off('click');
bar.on('click', function (evt) {
console.log("click");
}
}