Q
只发一次事件?
15
A
回答
14
您可以使用jQuery的one
method,这将认购仅一个事件的第一次出现。
例如:
$('something').one('click', function(e) {
alert('You will only see this once.');
});
20
香草JS
function addEventListenerOnce(target, type, listener) {
target.addEventListener(type, function fn(event) {
target.removeEventListener(type, fn);
listener(event);
});
}
addEventListenerOnce(document.getElementById("myelement"), "click", function (event) {
alert("You'll only see this once!");
});
http://www.sitepoint.com/create-one-time-events-javascript/
编辑:修改从https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
编辑2016年11月23日由菱的版本和术语启发:
once
即将推出浏览器。目前在Chrome 55,Firefox的50,Safari浏览器10.1
- http://caniuse.com/#feat=once-event-listener
- https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Parameters
并且你使用这样的:
document.addEventListener(
'DOMContentLoaded',
improveAllTheThings,
{once: true}
);
https://www.webreflection.co.uk/blog/2016/04/17/new-dom4-standards
3
同rofrol的答案,只是另一种形式:
function addEventListenerOnce(element, event, fn) {
var func = function() {
element.removeEventListener(event, func);
fn();
};
element.addEventListener(event, func);
}
0
此外,你可以这样做:为附加
window.addEventListener("click", function handleClick(e) {
window.removeEventListener("click", handleClick);
// ...
});
0
添加选项/删除事件侦听器:
function addEventListenerOnce(target, type, listener, optionsOrUseCaptureForAdd, optionsOrUseCaptureForRemove) {
const f = event => {
target.removeEventListener(type, f, optionsOrUseCaptureForRemove);
listener(event);
}
target.addEventListener(type, f, optionsOrUseCaptureForAdd);
}
2
只要使用正确的选项,你的addEventListener方法调用:
element.addEventListener(event, func, { once: true })
+0
不支持IE。 – 2018-02-13 19:37:54
相关问题
- 1. jQuery插件事件只触发一次
- 2. 角度事件只能触发一次触发一次
- 3. AngularJS - 事件只发射一次
- 4. 事件只会引发一次?
- 5. GridView'CheckedChanged'事件只发射一次
- 6. FilesystemWatcher只触发一次事件
- 7. 使c#/ wpf事件只触发一次?
- 8. 事件像componentDidUpdate,但只发射一次
- 9. Page_Load事件只会触发一次
- 10. jquery.change()事件只会触发一次
- 11. Xamarin AnimationEnd触发事件只有一次
- 12. Resize事件只会触发一次
- 13. JDialog WindowOpened事件只被触发一次
- 14. backbone.js - 只发生一次的事件
- 15. Javascript onkeydown事件只触发一次?
- 16. JavaFX按钮事件只触发一次
- 17. Backbone.View事件只会触发一次
- 18. 只注册一次事件
- 19. 事件只运行一次
- 20. jQuery如何让一个事件触发一次只触发一次div
- 21. 事件多次触发,但代码只能执行一次
- 22. 如何在Delphi中创建一个事件只发生一次?
- 23. Outlook 2016 VSTO文件夹添加事件只会触发一次
- 24. 使emberjs事件只被调用一次
- 25. Outlook.Explorer.SelectionChange事件只被调用一次
- 26. 点击事件只启动一次
- 27. Javascript只收到ActiveX事件一次
- 28. 键盘事件只能工作一次
- 29. jQuery事件将只运行一次
- 30. JavaScript的onclick事件只能一次
只要我的代表超过3000我要去c将'逃避'改为'暗示' – 2013-07-26 05:28:50
哦,我的确是很尴尬。感谢那。 – Qcom 2013-07-26 17:25:53
很高兴我的评论提请你注意 – 2013-07-26 19:10:54