将监听器作为变量并通过.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 是一个Object,它将是ByRef,因此可能仍会发生变化。