在触发一次或任意次数之后删除事件侦听器
这就是我所拥有的:
/*jslint browser: true, vars: true, white: true, maxerr: 50, indent: 4 */
(function ()
{
"use strict";
function removeEventListenerAfterFiring(numberOfTimes, callback, useCapture)
{
var count = 0;
return function listener(event)
{
count += 1;
if (count >= numberOfTimes)
{
event.target.removeEventListener(event.type, listener, useCapture);
}
callback();
};
}
function functionName()
{
// Code here.
}
window.addEventListener("DOMContentLoaded", removeEventListenerAfterFiring(1, functionName, false), false);
}());
有什么可以改进的吗?还是有更好的方法来做到这一点?
两次指定useCapture
是否可以接受?是否有一种方法来检测是否指定了useCapture
,使我不必将它传递给removeEventListenerAfterFiring
函数?
发布于 2016-08-12 23:08:21
考虑使用event.currentTarget
而不是event.target
,因为您的处理程序可能绑定到一个祖先元素,而不是当前元素。
https://codereview.stackexchange.com/questions/7515
复制相似问题