将监听器作为变量,并通过.addEventListener
进行附加。
var myListener = function (e) {
closePopupOnClick(e, popup);
};
document.addEventListener('touchstart', myListener, true);
然后在使用 .removeEventListener
移除时再次传递它。
document.removeEventListener('touchstart', myListener);
如果您没有使用严格模式,可以使用arguments.callee
使侦听器自我删除。
document.addEventListener('touchstart', function (e) {
closePopupOnClick(e, popup);
document.removeEventListener('touchstart', arguments.callee);
}, true);
如果您使用严格模式,想要让函数自我移除,必须使用命名函数表达式
document.addEventListener('touchstart', function myListener(e) {
closePopupOnClick(e, popup);
document.removeEventListener('touchstart', myListener);
}, true);
如果您想在监听器中使用可能会被某些东西(例如循环)更改的变量,则可以编写生成器函数,例如。
function listenerGenerator(popup) {
return function (e) {
closePopupOnClick(e, popup);
};
}
现在可以使用
listenerGenerator(popup)
创建监听器,它将作用于
popup
变量。请注意,如果
popup
是一个
对象,它将是
按引用传递的,因此仍可能会受到更改的影响。