我已经知道了JQuery的解决方案。
$('#myid').one('click', function(event) {
...
});
但现在我正在寻找纯JavaScript的方法,因为我不使用Jquery
我检查了once选项,但它并不受所有浏览器支持,请参阅文档
我已经知道了JQuery的解决方案。
$('#myid').one('click', function(event) {
...
});
但现在我正在寻找纯JavaScript的方法,因为我不使用Jquery
我检查了once选项,但它并不受所有浏览器支持,请参阅文档
https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener
你可以传递第三个参数,一个选项对象,带有{ once: true }
。
底部提示无法在IE中使用 :(
const myElement = document.getElementById('my-element-id');
myElement.addEventListener('click', function namedListener() {
// Remove the listener from the element the first time the listener is run:
myElement.removeEventListener('click', namedListener);
// ...do the rest of your stuff
});
document.getElementById("myid").addEventListener("click", handler);
// handler function
function handler(e) {
// remove this handler
e.target.removeEventListener(e.type, arguments.callee);
alert("This event will fire only once!");
}
arguments.callee
已被弃用,在使用use strict;
时可能会抛出错误,因此替代方案如下:// handler function
var eventHandler = function(e) {
// remove this handler
e.target.removeEventListener('click', eventHandler, false);
alert("This event will fire only once!");
}
document.getElementById("myid").addEventListener("click", eventHandler);
arguments.callee
已经过时超过十年了,不是吗? - John Montgomery