@whitesev/domutils 1.5.8 → 1.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,7 +42,7 @@ export declare class DOMUtilsEvent {
42
42
  * console.log("事件触发",event)
43
43
  * })
44
44
  */
45
- on<T extends Event>(element: DOMUtilsElementEventType, eventType: string, callback: (this: HTMLElement, event: T) => void, option?: DOMUtilsEventListenerOption | boolean): void;
45
+ on<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], callback: (this: HTMLElement, event: T) => void, option?: DOMUtilsEventListenerOption | boolean): void;
46
46
  /**
47
47
  * 绑定事件
48
48
  * @param element 需要绑定的元素|元素数组|window
@@ -55,16 +55,16 @@ export declare class DOMUtilsEvent {
55
55
  * + passive 表示事件监听器是否不会调用preventDefault()。默认为false
56
56
  * @example
57
57
  * // 监听元素a.xx的click、tap、hover事件
58
- * DOMUtils.on(document.querySelector("a.xx"),"click tap hover",(event)=>{
59
- * console.log("事件触发",event)
58
+ * DOMUtils.on(document.querySelector("a.xx"),"click tap hover",(event, selectorTarget)=>{
59
+ * console.log("事件触发", event, selectorTarget)
60
60
  * })
61
- * DOMUtils.on("a.xx",["click","tap","hover"],(event)=>{
62
- * console.log("事件触发",event)
61
+ * DOMUtils.on("a.xx",["click","tap","hover"],(event, selectorTarget)=>{
62
+ * console.log("事件触发", event, selectorTarget)
63
63
  * })
64
64
  * @example
65
65
  * // 监听全局document下的子元素a.xx的click事件
66
- * DOMUtils.on(document,"click tap hover","a.xx",(event)=>{
67
- * console.log("事件触发",event)
66
+ * DOMUtils.on(document,"click tap hover","a.xx",(event, selectorTarget)=>{
67
+ * console.log("事件触发", event, selectorTarget)
68
68
  * })
69
69
  */
70
70
  on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: DOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: DOMUtilsEventListenerOption | boolean): void;
@@ -80,19 +80,19 @@ export declare class DOMUtilsEvent {
80
80
  * + passive 表示事件监听器是否不会调用preventDefault()。默认为false
81
81
  * @example
82
82
  * // 监听元素a.xx的click、tap、hover事件
83
- * DOMUtils.on(document.querySelector("a.xx"),"click tap hover",(event)=>{
84
- * console.log("事件触发",event)
83
+ * DOMUtils.on(document.querySelector("a.xx"),"click tap hover",(event, selectorTarget)=>{
84
+ * console.log("事件触发", event, selectorTarget)
85
85
  * })
86
- * DOMUtils.on("a.xx",["click","tap","hover"],(event)=>{
87
- * console.log("事件触发",event)
86
+ * DOMUtils.on("a.xx",["click","tap","hover"],(event, selectorTarget)=>{
87
+ * console.log("事件触发", event, selectorTarget)
88
88
  * })
89
89
  * @example
90
90
  * // 监听全局document下的子元素a.xx的click事件
91
- * DOMUtils.on(document,"click tap hover","a.xx",(event)=>{
92
- * console.log("事件触发",event)
91
+ * DOMUtils.on(document,"click tap hover","a.xx",(event, selectorTarget)=>{
92
+ * console.log("事件触发", event, selectorTarget)
93
93
  * })
94
94
  */
95
- on<T extends Event>(element: DOMUtilsElementEventType, eventType: string, selector: string | string[] | (() => string | string[]) | undefined | null, callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: DOMUtilsEventListenerOption | boolean): void;
95
+ on<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: DOMUtilsEventListenerOption | boolean): void;
96
96
  /**
97
97
  * 取消绑定事件
98
98
  * @param element 需要取消绑定的元素|元素数组
@@ -106,7 +106,7 @@ export declare class DOMUtilsEvent {
106
106
  * DOMUtils.off(document.querySelector("a.xx"),"click")
107
107
  * DOMUtils.off("a.xx","click")
108
108
  */
109
- off<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], callback?: (this: HTMLElement, event: DOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: boolean | EventListenerOptions, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
109
+ off<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], callback?: (this: HTMLElement, event: DOMUtils_Event[T]) => void, option?: EventListenerOptions | boolean, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
110
110
  /**
111
111
  * 取消绑定事件
112
112
  * @param element 需要取消绑定的元素|元素数组
@@ -120,7 +120,7 @@ export declare class DOMUtilsEvent {
120
120
  * DOMUtils.off(document.querySelector("a.xx"),"click")
121
121
  * DOMUtils.off("a.xx","click")
122
122
  */
123
- off<T extends Event>(element: DOMUtilsElementEventType, eventType: string, callback?: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: boolean | EventListenerOptions, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
123
+ off<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], callback?: (this: HTMLElement, event: T) => void, option?: EventListenerOptions | boolean, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
124
124
  /**
125
125
  * 取消绑定事件
126
126
  * @param element 需要取消绑定的元素|元素数组
@@ -135,7 +135,7 @@ export declare class DOMUtilsEvent {
135
135
  * DOMUtils.off(document.querySelector("a.xx"),"click tap hover")
136
136
  * DOMUtils.off("a.xx",["click","tap","hover"])
137
137
  */
138
- off<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector?: DOMUtilsEventListenerOptionsAttribute["selector"] | undefined, callback?: (this: HTMLElement, event: DOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: boolean | EventListenerOptions, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
138
+ off<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector?: string | string[] | undefined | null, callback?: (this: HTMLElement, event: DOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: EventListenerOptions | boolean, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
139
139
  /**
140
140
  * 取消绑定事件
141
141
  * @param element 需要取消绑定的元素|元素数组
@@ -150,7 +150,7 @@ export declare class DOMUtilsEvent {
150
150
  * DOMUtils.off(document.querySelector("a.xx"),"click tap hover")
151
151
  * DOMUtils.off("a.xx",["click","tap","hover"])
152
152
  */
153
- off<T extends Event>(element: DOMUtilsElementEventType, eventType: string, selector?: DOMUtilsEventListenerOptionsAttribute["selector"] | undefined, callback?: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: boolean | EventListenerOptions, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
153
+ off<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], selector?: string | string[] | undefined | null, callback?: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: EventListenerOptions | boolean, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
154
154
  /**
155
155
  * 取消绑定所有的事件
156
156
  * @param element 需要取消绑定的元素|元素数组
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whitesev/domutils",
3
- "version": "1.5.8",
3
+ "version": "1.5.9",
4
4
  "description": "使用js重新对jQuery的部分函数进行了仿写",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
package/src/DOMUtils.ts CHANGED
@@ -12,7 +12,7 @@ class DOMUtils extends DOMUtilsEvent {
12
12
  super(option);
13
13
  }
14
14
  /** 版本号 */
15
- version = "2025.5.30";
15
+ version = "2025.6.6";
16
16
  /**
17
17
  * 获取元素的属性值
18
18
  * @param element 目标元素
@@ -1110,12 +1110,13 @@ class DOMUtils extends DOMUtilsEvent {
1110
1110
  width(
1111
1111
  element: HTMLElement | string | Window | typeof globalThis | Document,
1112
1112
  isShow: boolean = false
1113
- ) {
1113
+ ): number {
1114
1114
  let DOMUtilsContext = this;
1115
1115
  if (typeof element === "string") {
1116
1116
  element = DOMUtilsContext.selector<HTMLElement>(element)!;
1117
1117
  }
1118
1118
  if (element == null) {
1119
+ // @ts-ignore
1119
1120
  return;
1120
1121
  }
1121
1122
  if (DOMUtilsCommonUtils.isWin(element)) {
@@ -1213,7 +1214,7 @@ class DOMUtils extends DOMUtilsEvent {
1213
1214
  height(
1214
1215
  element: HTMLElement | string | Window | typeof globalThis | Document,
1215
1216
  isShow: boolean = false
1216
- ) {
1217
+ ): number {
1217
1218
  let DOMUtilsContext = this;
1218
1219
  if (DOMUtilsCommonUtils.isWin(element)) {
1219
1220
  return DOMUtilsContext.windowApi.window.document.documentElement
@@ -1293,9 +1294,9 @@ class DOMUtils extends DOMUtilsEvent {
1293
1294
  }
1294
1295
  /**
1295
1296
  * 获取元素的外部宽度(包括边框和外边距)
1296
- * @param {HTMLElement|string} element 要获取外部宽度的元素
1297
- * @param {boolean} [isShow=false] 是否已进行isShow,避免爆堆栈
1298
- * @returns {number} 元素的外部宽度,单位为像素
1297
+ * @param element 要获取外部宽度的元素
1298
+ * @param [isShow=false] 是否已进行isShow,避免爆堆栈
1299
+ * @returns 元素的外部宽度,单位为像素
1299
1300
  * @example
1300
1301
  * // 获取元素a.xx的外部宽度
1301
1302
  * DOMUtils.outerWidth(document.querySelector("a.xx"))
@@ -1312,7 +1313,7 @@ class DOMUtils extends DOMUtilsEvent {
1312
1313
  outerWidth(
1313
1314
  element: HTMLElement | string | Window | typeof globalThis | Document,
1314
1315
  isShow: boolean = false
1315
- ) {
1316
+ ): number {
1316
1317
  let DOMUtilsContext = this;
1317
1318
  if (DOMUtilsCommonUtils.isWin(element)) {
1318
1319
  return DOMUtilsContext.windowApi.window.innerWidth;
@@ -61,7 +61,7 @@ export class DOMUtilsEvent {
61
61
  */
62
62
  on<T extends Event>(
63
63
  element: DOMUtilsElementEventType,
64
- eventType: string,
64
+ eventType: string | string[],
65
65
  callback: (this: HTMLElement, event: T) => void,
66
66
  option?: DOMUtilsEventListenerOption | boolean
67
67
  ): void;
@@ -77,16 +77,16 @@ export class DOMUtilsEvent {
77
77
  * + passive 表示事件监听器是否不会调用preventDefault()。默认为false
78
78
  * @example
79
79
  * // 监听元素a.xx的click、tap、hover事件
80
- * DOMUtils.on(document.querySelector("a.xx"),"click tap hover",(event)=>{
81
- * console.log("事件触发",event)
80
+ * DOMUtils.on(document.querySelector("a.xx"),"click tap hover",(event, selectorTarget)=>{
81
+ * console.log("事件触发", event, selectorTarget)
82
82
  * })
83
- * DOMUtils.on("a.xx",["click","tap","hover"],(event)=>{
84
- * console.log("事件触发",event)
83
+ * DOMUtils.on("a.xx",["click","tap","hover"],(event, selectorTarget)=>{
84
+ * console.log("事件触发", event, selectorTarget)
85
85
  * })
86
86
  * @example
87
87
  * // 监听全局document下的子元素a.xx的click事件
88
- * DOMUtils.on(document,"click tap hover","a.xx",(event)=>{
89
- * console.log("事件触发",event)
88
+ * DOMUtils.on(document,"click tap hover","a.xx",(event, selectorTarget)=>{
89
+ * console.log("事件触发", event, selectorTarget)
90
90
  * })
91
91
  */
92
92
  on<T extends DOMUtils_EventType>(
@@ -112,22 +112,22 @@ export class DOMUtilsEvent {
112
112
  * + passive 表示事件监听器是否不会调用preventDefault()。默认为false
113
113
  * @example
114
114
  * // 监听元素a.xx的click、tap、hover事件
115
- * DOMUtils.on(document.querySelector("a.xx"),"click tap hover",(event)=>{
116
- * console.log("事件触发",event)
115
+ * DOMUtils.on(document.querySelector("a.xx"),"click tap hover",(event, selectorTarget)=>{
116
+ * console.log("事件触发", event, selectorTarget)
117
117
  * })
118
- * DOMUtils.on("a.xx",["click","tap","hover"],(event)=>{
119
- * console.log("事件触发",event)
118
+ * DOMUtils.on("a.xx",["click","tap","hover"],(event, selectorTarget)=>{
119
+ * console.log("事件触发", event, selectorTarget)
120
120
  * })
121
121
  * @example
122
122
  * // 监听全局document下的子元素a.xx的click事件
123
- * DOMUtils.on(document,"click tap hover","a.xx",(event)=>{
124
- * console.log("事件触发",event)
123
+ * DOMUtils.on(document,"click tap hover","a.xx",(event, selectorTarget)=>{
124
+ * console.log("事件触发", event, selectorTarget)
125
125
  * })
126
126
  */
127
127
  on<T extends Event>(
128
128
  element: DOMUtilsElementEventType,
129
- eventType: string,
130
- selector: string | string[] | (() => string | string[]) | undefined | null,
129
+ eventType: string | string[],
130
+ selector: string | string[] | undefined | null,
131
131
  callback: (
132
132
  this: HTMLElement,
133
133
  event: T,
@@ -146,11 +146,11 @@ export class DOMUtilsEvent {
146
146
  | Element
147
147
  | null
148
148
  | typeof globalThis,
149
- eventType: DOMUtils_EventType | DOMUtils_EventType[] | string,
149
+ eventType: DOMUtils_EventType | DOMUtils_EventType[] | string | string[],
150
150
  selector:
151
151
  | string
152
- | undefined
153
152
  | string[]
153
+ | undefined
154
154
  | ((this: HTMLElement, event: T, selectorTarget: HTMLElement) => void)
155
155
  | null,
156
156
  callback?:
@@ -212,14 +212,26 @@ export class DOMUtilsEvent {
212
212
  // 事件名
213
213
  let eventTypeList: string[] = [];
214
214
  if (Array.isArray(eventType)) {
215
- eventTypeList = eventTypeList.concat(eventType as string[]);
215
+ eventTypeList = eventTypeList.concat(
216
+ eventType.filter(
217
+ (eventTypeItem) =>
218
+ typeof eventTypeItem === "string" && eventTypeItem.toString() !== ""
219
+ )
220
+ );
216
221
  } else if (typeof eventType === "string") {
217
- eventTypeList = eventTypeList.concat(eventType.split(" "));
222
+ eventTypeList = eventTypeList.concat(
223
+ eventType.split(" ").filter((eventTypeItem) => eventTypeItem !== "")
224
+ );
218
225
  }
219
226
  // 子元素选择器
220
227
  let selectorList: string[] = [];
221
228
  if (Array.isArray(selector)) {
222
- selectorList = selectorList.concat(selector);
229
+ selectorList = selectorList.concat(
230
+ selector.filter(
231
+ (selectorItem) =>
232
+ typeof selectorItem === "string" && selectorItem.toString() !== ""
233
+ )
234
+ );
223
235
  } else if (typeof selector === "string") {
224
236
  selectorList.push(selector);
225
237
  }
@@ -237,11 +249,12 @@ export class DOMUtilsEvent {
237
249
  isComposedPath: false,
238
250
  };
239
251
  if (typeof selector === "function") {
240
- /* 这是为没有selector的情况 */
252
+ // 这是为没有selector的情况
253
+ // 那么它就是callback
241
254
  listenerCallBack = selector as any;
242
255
  listenerOption = getOption(args, 3, listenerOption);
243
256
  } else {
244
- /* 这是存在selector的情况 */
257
+ // 这是存在selector的情况
245
258
  listenerOption = getOption(args, 4, listenerOption);
246
259
  }
247
260
  /**
@@ -270,12 +283,15 @@ export class DOMUtilsEvent {
270
283
  let eventTarget = listenerOption.isComposedPath
271
284
  ? (event.composedPath()[0] as HTMLElement)
272
285
  : (event.target as HTMLElement);
273
- let totalParent =
274
- DOMUtilsCommonUtils.isWin(elementItem) ||
275
- // @ts-ignore
276
- elementItem === DOMUtilsContext.windowApi.document
277
- ? DOMUtilsContext.windowApi.document.documentElement
278
- : elementItem;
286
+ let totalParent = elementItem;
287
+ if (DOMUtilsCommonUtils.isWin(totalParent)) {
288
+ if (
289
+ totalParent ===
290
+ (DOMUtilsContext.windowApi.document as any as HTMLElement)
291
+ ) {
292
+ totalParent = DOMUtilsContext.windowApi.document.documentElement;
293
+ }
294
+ }
279
295
  let findValue = selectorList.find((selectorItem) => {
280
296
  // 判断目标元素是否匹配选择器
281
297
  if (DOMUtilsContext.matches(eventTarget, selectorItem)) {
@@ -322,8 +338,7 @@ export class DOMUtilsEvent {
322
338
  /* 获取对象上的事件 */
323
339
  let elementEvents: {
324
340
  [k: string]: DOMUtilsEventListenerOptionsAttribute[];
325
- // @ts-ignore
326
- } = elementItem[DOMUtilsData.SymbolEvents] || {};
341
+ } = Reflect.get(elementItem, DOMUtilsData.SymbolEvents) || {};
327
342
  /* 初始化对象上的xx事件 */
328
343
  elementEvents[eventName] = elementEvents[eventName] || [];
329
344
  elementEvents[eventName].push({
@@ -333,8 +348,7 @@ export class DOMUtilsEvent {
333
348
  originCallBack: listenerCallBack,
334
349
  });
335
350
  /* 覆盖事件 */
336
- // @ts-ignore
337
- elementItem[DOMUtilsData.SymbolEvents] = elementEvents;
351
+ Reflect.set(elementItem, DOMUtilsData.SymbolEvents, elementEvents);
338
352
  });
339
353
  });
340
354
  }
@@ -354,12 +368,8 @@ export class DOMUtilsEvent {
354
368
  off<T extends DOMUtils_EventType>(
355
369
  element: DOMUtilsElementEventType,
356
370
  eventType: T | T[],
357
- callback?: (
358
- this: HTMLElement,
359
- event: DOMUtils_Event[T],
360
- selectorTarget: HTMLElement
361
- ) => void,
362
- option?: boolean | EventListenerOptions,
371
+ callback?: (this: HTMLElement, event: DOMUtils_Event[T]) => void,
372
+ option?: EventListenerOptions | boolean,
363
373
  filter?: (
364
374
  value: DOMUtilsEventListenerOptionsAttribute,
365
375
  index: number,
@@ -381,13 +391,9 @@ export class DOMUtilsEvent {
381
391
  */
382
392
  off<T extends Event>(
383
393
  element: DOMUtilsElementEventType,
384
- eventType: string,
385
- callback?: (
386
- this: HTMLElement,
387
- event: T,
388
- selectorTarget: HTMLElement
389
- ) => void,
390
- option?: boolean | EventListenerOptions,
394
+ eventType: string | string[],
395
+ callback?: (this: HTMLElement, event: T) => void,
396
+ option?: EventListenerOptions | boolean,
391
397
  filter?: (
392
398
  value: DOMUtilsEventListenerOptionsAttribute,
393
399
  index: number,
@@ -411,13 +417,13 @@ export class DOMUtilsEvent {
411
417
  off<T extends DOMUtils_EventType>(
412
418
  element: DOMUtilsElementEventType,
413
419
  eventType: T | T[],
414
- selector?: DOMUtilsEventListenerOptionsAttribute["selector"] | undefined,
420
+ selector?: string | string[] | undefined | null,
415
421
  callback?: (
416
422
  this: HTMLElement,
417
423
  event: DOMUtils_Event[T],
418
424
  selectorTarget: HTMLElement
419
425
  ) => void,
420
- option?: boolean | EventListenerOptions,
426
+ option?: EventListenerOptions | boolean,
421
427
  filter?: (
422
428
  value: DOMUtilsEventListenerOptionsAttribute,
423
429
  index: number,
@@ -440,14 +446,14 @@ export class DOMUtilsEvent {
440
446
  */
441
447
  off<T extends Event>(
442
448
  element: DOMUtilsElementEventType,
443
- eventType: string,
444
- selector?: DOMUtilsEventListenerOptionsAttribute["selector"] | undefined,
449
+ eventType: string | string[],
450
+ selector?: string | string[] | undefined | null,
445
451
  callback?: (
446
452
  this: HTMLElement,
447
453
  event: T,
448
454
  selectorTarget: HTMLElement
449
455
  ) => void,
450
- option?: boolean | EventListenerOptions,
456
+ option?: EventListenerOptions | boolean,
451
457
  filter?: (
452
458
  value: DOMUtilsEventListenerOptionsAttribute,
453
459
  index: number,
@@ -465,18 +471,20 @@ export class DOMUtilsEvent {
465
471
  | Element
466
472
  | null
467
473
  | typeof globalThis,
468
- eventType: DOMUtils_EventType | DOMUtils_EventType[] | string,
469
- selector?:
470
- | DOMUtilsEventListenerOptionsAttribute["selector"]
474
+ eventType: DOMUtils_EventType | DOMUtils_EventType[] | string | string[],
475
+ selector:
476
+ | string
477
+ | string[]
471
478
  | undefined
472
- | ((this: HTMLElement, event: T, selectorTarget: HTMLElement) => void),
479
+ | ((this: HTMLElement, event: T, selectorTarget: HTMLElement) => void)
480
+ | null,
473
481
  callback?:
474
482
  | ((this: HTMLElement, event: T, selectorTarget: HTMLElement) => void)
475
- | boolean
476
- | EventListenerOptions,
483
+ | EventListenerOptions
484
+ | boolean,
477
485
  option?:
478
- | boolean
479
486
  | EventListenerOptions
487
+ | boolean
480
488
  | ((
481
489
  value: DOMUtilsEventListenerOptionsAttribute,
482
490
  index: number,
@@ -499,7 +507,7 @@ export class DOMUtilsEvent {
499
507
  startIndex: number,
500
508
  option: EventListenerOptions
501
509
  ) {
502
- let currentParam: boolean | EventListenerOptions = args1[startIndex];
510
+ let currentParam: EventListenerOptions | boolean = args1[startIndex];
503
511
  if (typeof currentParam === "boolean") {
504
512
  option.capture = currentParam;
505
513
  } else if (
@@ -527,14 +535,26 @@ export class DOMUtilsEvent {
527
535
  }
528
536
  let eventTypeList: string[] = [];
529
537
  if (Array.isArray(eventType)) {
530
- eventTypeList = eventTypeList.concat(eventType as string[]);
538
+ eventTypeList = eventTypeList.concat(
539
+ eventType.filter(
540
+ (eventTypeItem) =>
541
+ typeof eventTypeItem === "string" && eventTypeItem.toString() !== ""
542
+ )
543
+ );
531
544
  } else if (typeof eventType === "string") {
532
- eventTypeList = eventTypeList.concat(eventType.split(" "));
545
+ eventTypeList = eventTypeList.concat(
546
+ eventType.split(" ").filter((eventTypeItem) => eventTypeItem !== "")
547
+ );
533
548
  }
534
549
  // 子元素选择器
535
550
  let selectorList: string[] = [];
536
551
  if (Array.isArray(selector)) {
537
- selectorList = selectorList.concat(selector);
552
+ selectorList = selectorList.concat(
553
+ selector.filter(
554
+ (selectorItem) =>
555
+ typeof selectorItem === "string" && selectorItem.toString() !== ""
556
+ )
557
+ );
538
558
  } else if (typeof selector === "string") {
539
559
  selectorList.push(selector);
540
560
  }
@@ -554,10 +574,12 @@ export class DOMUtilsEvent {
554
574
  capture: false,
555
575
  };
556
576
  if (typeof selector === "function") {
557
- /* 这是为没有selector的情况 */
577
+ // 这是为没有selector的情况
578
+ // 那么它就是callback
558
579
  listenerCallBack = selector;
559
580
  listenerOption = getOption(args, 3, listenerOption);
560
581
  } else {
582
+ // 这是存在selector的情况
561
583
  listenerOption = getOption(args, 4, listenerOption);
562
584
  }
563
585
  // 是否移除所有事件
@@ -574,11 +596,11 @@ export class DOMUtilsEvent {
574
596
  }
575
597
  elementList.forEach((elementItem) => {
576
598
  /* 获取对象上的事件 */
577
- // @ts-ignore
578
- let elementEvents = elementItem[DOMUtilsData.SymbolEvents] || {};
599
+ let elementEvents: {
600
+ [key: string]: DOMUtilsEventListenerOptionsAttribute[];
601
+ } = Reflect.get(elementItem, DOMUtilsData.SymbolEvents) || {};
579
602
  eventTypeList.forEach((eventName) => {
580
- let handlers: DOMUtilsEventListenerOptionsAttribute[] =
581
- elementEvents[eventName] || [];
603
+ let handlers = elementEvents[eventName] || [];
582
604
  if (typeof filter === "function") {
583
605
  handlers = handlers.filter(filter);
584
606
  }
@@ -619,8 +641,7 @@ export class DOMUtilsEvent {
619
641
  DOMUtilsCommonUtils.delete(elementEvents, eventType);
620
642
  }
621
643
  });
622
- // @ts-ignore
623
- elementItem[DOMUtilsData.SymbolEvents] = elementEvents;
644
+ Reflect.set(elementItem, DOMUtilsData.SymbolEvents, elementEvents);
624
645
  });
625
646
  }
626
647
  /**
@@ -687,8 +708,8 @@ export class DOMUtilsEvent {
687
708
  capture: handler["option"]["capture"],
688
709
  });
689
710
  }
690
- // @ts-ignore
691
- DOMUtilsCommonUtils.delete(elementItem[symbolEvents], eventName);
711
+ let events = Reflect.get(elementItem, symbolEvents);
712
+ DOMUtilsCommonUtils.delete(events, eventName);
692
713
  });
693
714
  });
694
715
  });