リスナーを変数として配置し、経由でアタッチします.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)
のスコープが設定されます。がObjectの場合はByRefになるため、変更される可能性があることにpopup
注意してください。popup