Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 7x 7x 7x 199x 7x 7x 199x 199x 199x 3x 3x 3x 3x 199x 199x 199x 199x 199x 199x | const eventsData = {}; let token = 0; const getDataName = function (name, type) { return `${name}_${type}`; }; const off = function (name, element, type, token) { const eventDataName = getDataName(name, type); const eventData = eventsData[eventDataName]; delete eventData.data[token]; if (!Object.keys(eventData).length) { delete eventsData[eventDataName]; element.removeEventListener(type, eventData.listener, eventData.options); } }; const initEvent = function (name, element, type, listener, options) { const eventDataName = getDataName(name, type); let eventData = eventsData[eventDataName]; if (!eventData) { const listenerBack = listener; listener = function (e) { listenerBack(e, eventsData[eventDataName].data); }; eventData = eventsData[eventDataName] = { listener, options, data: {}, }; element.addEventListener(type, listener, options); } return eventDataName; }; /** * 避免多次绑定同一事件,方便添加 data */ export default { on(name, data, element, type, listener, options) { const eventDataName = initEvent(name, element, type, listener, options); token++; eventsData[eventDataName].data[token] = data; const i = token; return () => off(name, element, type, i); }, off, getToken() { return token; }, }; |