将侦听器作为变量并通过附加.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,因此可能仍会发生变化。