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. 只觸發jQuery mousemove事件一次
- 4. backbone.js - 只發生一次的事件
- 5. JDialog WindowOpened事件只被觸發一次
- 6. Xamarin AnimationEnd觸發事件只有一次
- 7. AngularJS - 事件只發射一次
- 8. Backbone.View事件只會觸發一次
- 9. jQuery Click事件只觸發一次
- 10. Resize事件只會觸發一次
- 11. jQuery .change()事件只觸發一次
- 12. GridView'CheckedChanged'事件只發射一次
- 13. JavaFX按鈕事件只觸發一次
- 14. Phonegap inAppBrowser事件只發射一次
- 15. 使c#/ wpf事件只觸發一次?
- 16. 事件只發生第一次
- 17. jquery.change()事件只會觸發一次
- 18. 只觸發jQuery滾動事件一次
- 19. Page_Load事件只會觸發一次
- 20. FilesystemWatcher只觸發一次事件
- 21. 事件只會引發一次?
- 22. 事件像componentDidUpdate,但只發射一次
- 23. Javascript onkeydown事件只觸發一次?
- 24. 事件只有一次
- 25. 事件只運行一次
- 26. 只註冊一次事件
- 27. jQuery如何讓一個事件觸發一次只觸發一次div
- 28. 事件多次觸發,但代碼只能執行一次
- 29. 如何在Delphi中創建一個事件只發生一次?
- 30. Global.asax文件中只觸發一次的事件
只要我的代表超過3000我要去c將'逃避'改爲'暗示' – 2013-07-26 05:28:50
哦,我的確是很尷尬。感謝那。 – Qcom 2013-07-26 17:25:53
很高興我的評論提請你注意 – 2013-07-26 19:10:54