Mettere l'ascoltatore come una variabile e collegare tramite .addEventListener
var myListener = function (e) {
closePopupOnClick(e, popup);
};
document.addEventListener('touchstart', myListener, true);
poi passarlo di nuovo quando si rimuove con .removeEventListener
document.removeEventListener('touchstart', myListener);
Se siete non in modalità rigorosa voi può far sì che un ascoltatore si rimuova con arguments.callee
document.addEventListener('touchstart', function (e) {
closePopupOnClick(e, popup);
document.removeEventListener('touchstart', arguments.callee);
}, true);
Se si è in modalità rigorosa, è necessario utilizzare un chiamato funzione di espressione se si desidera una funzione per rimuovere se stesso
document.addEventListener('touchstart', function myListener(e) {
closePopupOnClick(e, popup);
document.removeEventListener('touchstart', myListener);
}, true);
Se si desidera utilizzare le variabili in chi ascolta che può essere cambiato da qualcosa (es un ciclo), quindi è possibile scrivere una funzione generatore, per esempio
function listenerGenerator(popup) {
return function (e) {
closePopupOnClick(e, popup);
};
}
Ora è possibile creare l'ascoltatore con listenerGenerator(popup)
e sarà portata variabile popup
. Si noti che se popup
è un, sarà ByRef e pertanto potrebbe essere soggetto a modifiche.
possibile duplicato di [JavaScript: rimuovere listener di eventi] (http://stackoverflow.com/questions/4402287/javascript-remove-event-listener) anche [Javascript: rimozione di un listener di eventi anonimi] (http: // stackoverflow .com/questions/3106605/remove-an-anonimo-event-listener) – Ohgodwhy
no quella domanda non affronta il problema dei params. – Tanya