@whitesev/domutils 1.4.4 → 1.4.6

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.
@@ -67,7 +67,7 @@ export declare class DOMUtilsEvent {
67
67
  * console.log("事件触发",event)
68
68
  * })
69
69
  */
70
- on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: DOMUtils_Event[T]) => void, option?: DOMUtilsEventListenerOption | boolean): void;
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;
71
71
  /**
72
72
  * 绑定事件
73
73
  * @param element 需要绑定的元素|元素数组|window
@@ -92,7 +92,7 @@ export declare class DOMUtilsEvent {
92
92
  * console.log("事件触发",event)
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) => void, option?: DOMUtilsEventListenerOption | boolean): void;
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;
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]) => 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], selectorTarget?: HTMLElement) => void, option?: boolean | EventListenerOptions, 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) => void, option?: boolean | EventListenerOptions, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
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;
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]) => 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?: 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;
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) => void, option?: boolean | EventListenerOptions, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
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;
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.4.4",
3
+ "version": "1.4.6",
4
4
  "description": "使用js重新对jQuery的部分函数进行了仿写",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
package/src/DOMUtils.ts CHANGED
@@ -20,7 +20,7 @@ class DOMUtils extends DOMUtilsEvent {
20
20
  super(option);
21
21
  }
22
22
  /** 版本号 */
23
- version = "2024.12.3";
23
+ version = "2024.12.4";
24
24
  /**
25
25
  * 获取元素的属性值
26
26
  * @param element 目标元素
@@ -94,7 +94,11 @@ export class DOMUtilsEvent {
94
94
  element: DOMUtilsElementEventType,
95
95
  eventType: T | T[],
96
96
  selector: string | string[] | undefined | null,
97
- callback: (this: HTMLElement, event: DOMUtils_Event[T]) => void,
97
+ callback: (
98
+ this: HTMLElement,
99
+ event: DOMUtils_Event[T],
100
+ selectorTarget?: HTMLElement
101
+ ) => void,
98
102
  option?: DOMUtilsEventListenerOption | boolean
99
103
  ): void;
100
104
  /**
@@ -125,7 +129,11 @@ export class DOMUtilsEvent {
125
129
  element: DOMUtilsElementEventType,
126
130
  eventType: string,
127
131
  selector: string | string[] | (() => string | string[]) | undefined | null,
128
- callback: (this: HTMLElement, event: T) => void,
132
+ callback: (
133
+ this: HTMLElement,
134
+ event: T,
135
+ selectorTarget?: HTMLElement
136
+ ) => void,
129
137
  option?: DOMUtilsEventListenerOption | boolean
130
138
  ): void;
131
139
  on<T extends Event>(
@@ -144,10 +152,10 @@ export class DOMUtilsEvent {
144
152
  | string
145
153
  | undefined
146
154
  | string[]
147
- | ((this: HTMLElement, event: T) => void)
155
+ | ((this: HTMLElement, event: T, selectorTarget?: HTMLElement) => void)
148
156
  | null,
149
157
  callback?:
150
- | ((this: HTMLElement, event: T) => void)
158
+ | ((this: HTMLElement, event: T, selectorTarget?: HTMLElement) => void)
151
159
  | DOMUtilsEventListenerOption
152
160
  | boolean,
153
161
  option?: DOMUtilsEventListenerOption | boolean
@@ -217,8 +225,11 @@ export class DOMUtilsEvent {
217
225
  selectorList.push(selector);
218
226
  }
219
227
  // 事件回调
220
- let listenerCallBack: (this: HTMLElement, event: Event) => void =
221
- callback as any;
228
+ let listenerCallBack: (
229
+ this: HTMLElement,
230
+ event: Event,
231
+ selectorTarget?: HTMLElement
232
+ ) => void = callback as any;
222
233
  // 事件配置
223
234
  let listenerOption: DOMUtilsEventListenerOption = {
224
235
  capture: false,
@@ -266,7 +277,7 @@ export class DOMUtilsEvent {
266
277
  const selectorItem = selectorList[index];
267
278
  if (eventTarget.matches(selectorItem)) {
268
279
  /* 当前目标可以被selector所匹配到 */
269
- listenerCallBack.call(eventTarget, event as any);
280
+ listenerCallBack.call(eventTarget, event as any, eventTarget);
270
281
  checkOptionOnceToRemoveEventListener();
271
282
  break;
272
283
  } else {
@@ -276,12 +287,19 @@ export class DOMUtilsEvent {
276
287
  ) as HTMLElement | null;
277
288
  if ($closestMatches && totalParent.contains($closestMatches)) {
278
289
  /* event的target值不能直接修改 */
279
- OriginPrototype.Object.defineProperty(event, "target", {
280
- get() {
281
- return $closestMatches;
282
- },
283
- });
284
- listenerCallBack.call($closestMatches, event as any);
290
+ // 这里尝试使用defineProperty修改eventtarget
291
+ try {
292
+ OriginPrototype.Object.defineProperty(event, "target", {
293
+ get() {
294
+ return $closestMatches;
295
+ },
296
+ });
297
+ } catch (error) {}
298
+ listenerCallBack.call(
299
+ $closestMatches,
300
+ event as any,
301
+ $closestMatches
302
+ );
285
303
  checkOptionOnceToRemoveEventListener();
286
304
  break;
287
305
  }
@@ -335,7 +353,11 @@ export class DOMUtilsEvent {
335
353
  off<T extends DOMUtils_EventType>(
336
354
  element: DOMUtilsElementEventType,
337
355
  eventType: T | T[],
338
- callback?: (this: HTMLElement, event: DOMUtils_Event[T]) => void,
356
+ callback?: (
357
+ this: HTMLElement,
358
+ event: DOMUtils_Event[T],
359
+ selectorTarget?: HTMLElement
360
+ ) => void,
339
361
  option?: boolean | EventListenerOptions,
340
362
  filter?: (
341
363
  value: DOMUtilsEventListenerOptionsAttribute,
@@ -359,7 +381,11 @@ export class DOMUtilsEvent {
359
381
  off<T extends Event>(
360
382
  element: DOMUtilsElementEventType,
361
383
  eventType: string,
362
- callback?: (this: HTMLElement, event: T) => void,
384
+ callback?: (
385
+ this: HTMLElement,
386
+ event: T,
387
+ selectorTarget?: HTMLElement
388
+ ) => void,
363
389
  option?: boolean | EventListenerOptions,
364
390
  filter?: (
365
391
  value: DOMUtilsEventListenerOptionsAttribute,
@@ -385,7 +411,11 @@ export class DOMUtilsEvent {
385
411
  element: DOMUtilsElementEventType,
386
412
  eventType: T | T[],
387
413
  selector?: DOMUtilsEventListenerOptionsAttribute["selector"] | undefined,
388
- callback?: (this: HTMLElement, event: DOMUtils_Event[T]) => void,
414
+ callback?: (
415
+ this: HTMLElement,
416
+ event: DOMUtils_Event[T],
417
+ selectorTarget?: HTMLElement
418
+ ) => void,
389
419
  option?: boolean | EventListenerOptions,
390
420
  filter?: (
391
421
  value: DOMUtilsEventListenerOptionsAttribute,
@@ -411,7 +441,11 @@ export class DOMUtilsEvent {
411
441
  element: DOMUtilsElementEventType,
412
442
  eventType: string,
413
443
  selector?: DOMUtilsEventListenerOptionsAttribute["selector"] | undefined,
414
- callback?: (this: HTMLElement, event: T) => void,
444
+ callback?: (
445
+ this: HTMLElement,
446
+ event: T,
447
+ selectorTarget?: HTMLElement
448
+ ) => void,
415
449
  option?: boolean | EventListenerOptions,
416
450
  filter?: (
417
451
  value: DOMUtilsEventListenerOptionsAttribute,
@@ -434,9 +468,9 @@ export class DOMUtilsEvent {
434
468
  selector?:
435
469
  | DOMUtilsEventListenerOptionsAttribute["selector"]
436
470
  | undefined
437
- | ((this: HTMLElement, event: T) => void),
471
+ | ((this: HTMLElement, event: T, selectorTarget?: HTMLElement) => void),
438
472
  callback?:
439
- | ((this: HTMLElement, event: T) => void)
473
+ | ((this: HTMLElement, event: T, selectorTarget?: HTMLElement) => void)
440
474
  | boolean
441
475
  | EventListenerOptions,
442
476
  option?: