Đặt người nghe như là một biến và đính kèm qua .addEventListener
var myListener = function (e) {
closePopupOnClick(e, popup);
};
document.addEventListener('touchstart', myListener, true);
sau đó vượt qua nó một lần nữa khi loại bỏ với .removeEventListener
document.removeEventListener('touchstart', myListener);
Nếu bạn không trong chế độ nghiêm ngặt bạn có thể khiến người nghe tự xóa chính mình bằng arguments.callee
document.addEventListener('touchstart', function (e) {
closePopupOnClick(e, popup);
document.removeEventListener('touchstart', arguments.callee);
}, true);
Nếu bạn đang ở trong chế độ nghiêm ngặt, bạn phải sử dụng một biểu thức tên chức năng nếu bạn muốn có một chức năng để loại bỏ bản thân
document.addEventListener('touchstart', function myListener(e) {
closePopupOnClick(e, popup);
document.removeEventListener('touchstart', myListener);
}, true);
Nếu bạn muốn sử dụng biến trong người nghe có thể được thay đổi bởi một cái gì đó (ví dụ một vòng lặp), sau đó bạn có thể viết một hàm máy phát điện, ví dụ
function listenerGenerator(popup) {
return function (e) {
closePopupOnClick(e, popup);
};
}
Bây giờ bạn có thể tạo cho người nghe với listenerGenerator(popup)
và nó sẽ phạm vi biến popup
. Lưu ý rằng nếu popup
là một đối tượng , nó sẽ là ByRef và do đó vẫn có thể bị thay đổi.
bản sao có thể có của [JavaScript: xóa trình xử lý sự kiện] (http://stackoverflow.com/questions/4402287/javascript-remove-event-listener) cũng [Javascript: Xóa trình xử lý sự kiện ẩn danh] (http: // stackoverflow .com/questions/3106605/remove-an-anonymous-event-listener) – Ohgodwhy
không có câu hỏi nào không giải quyết vấn đề tham số. – Tanya