@whitesev/domutils 1.5.5 → 1.5.7
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.
- package/dist/index.amd.js +148 -41
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +148 -41
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +148 -41
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +148 -41
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +148 -41
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +148 -41
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/DOMUtils.d.ts +5 -8
- package/dist/types/src/DOMUtilsCommonUtils.d.ts +5 -0
- package/dist/types/src/DOMUtilsEvent.d.ts +9 -0
- package/package.json +1 -1
- package/src/DOMUtils.ts +36 -38
- package/src/DOMUtilsCommonUtils.ts +7 -0
- package/src/DOMUtilsEvent.ts +140 -11
|
@@ -2,11 +2,6 @@ import { DOMUtilsEvent } from "./DOMUtilsEvent";
|
|
|
2
2
|
import type { DOMUtilsCreateElementAttributesMap } from "./types/DOMUtilsEvent";
|
|
3
3
|
import { ParseHTMLReturnType, type DOMUtilsTargetElementType } from "./types/global";
|
|
4
4
|
import type { WindowApiOption } from "./types/WindowApi";
|
|
5
|
-
/**
|
|
6
|
-
* 判断是否是元素列表
|
|
7
|
-
* @param $ele
|
|
8
|
-
*/
|
|
9
|
-
export declare const isNodeList: ($ele: any) => $ele is any[] | NodeList;
|
|
10
5
|
declare class DOMUtils extends DOMUtilsEvent {
|
|
11
6
|
constructor(option?: WindowApiOption);
|
|
12
7
|
/** 版本号 */
|
|
@@ -72,7 +67,7 @@ declare class DOMUtils extends DOMUtilsEvent {
|
|
|
72
67
|
* DOMUtils.css("a.xx","display");
|
|
73
68
|
* > "none"
|
|
74
69
|
* */
|
|
75
|
-
css(element: DOMUtilsTargetElementType, property: keyof CSSStyleDeclaration): string;
|
|
70
|
+
css(element: DOMUtilsTargetElementType, property: keyof Omit<CSSStyleDeclaration, "zIndex"> | "z-index"): string;
|
|
76
71
|
/**
|
|
77
72
|
* 获取元素的样式属性值
|
|
78
73
|
* @param element 目标元素
|
|
@@ -100,7 +95,7 @@ declare class DOMUtils extends DOMUtilsEvent {
|
|
|
100
95
|
* DOMUtils.css(document.querySelector("a.xx"),"top","10px");
|
|
101
96
|
* DOMUtils.css(document.querySelector("a.xx"),"top",10);
|
|
102
97
|
* */
|
|
103
|
-
css(element: DOMUtilsTargetElementType, property: keyof CSSStyleDeclaration & string, value: string | number): string;
|
|
98
|
+
css(element: DOMUtilsTargetElementType, property: (keyof Omit<CSSStyleDeclaration, "zIndex"> | "z-index") & string, value: string | number): string;
|
|
104
99
|
/**
|
|
105
100
|
* 设置元素的样式属性
|
|
106
101
|
* @param element 目标元素
|
|
@@ -116,7 +111,9 @@ declare class DOMUtils extends DOMUtilsEvent {
|
|
|
116
111
|
* DOMUtils.css(document.querySelector("a.xx"),{ top: 10 });
|
|
117
112
|
* */
|
|
118
113
|
css(element: DOMUtilsTargetElementType, property: {
|
|
119
|
-
[P in keyof CSSStyleDeclaration]?: CSSStyleDeclaration[P];
|
|
114
|
+
[P in keyof Omit<CSSStyleDeclaration, "zIndex">]?: CSSStyleDeclaration[P];
|
|
115
|
+
} | {
|
|
116
|
+
"z-index": string | number;
|
|
120
117
|
} | {
|
|
121
118
|
[key: string]: string | number;
|
|
122
119
|
}): string;
|
|
@@ -60,5 +60,10 @@ declare const DOMUtilsCommonUtils: {
|
|
|
60
60
|
* 配合 .setInterval 使用
|
|
61
61
|
*/
|
|
62
62
|
clearInterval(timeId: number | undefined): void;
|
|
63
|
+
/**
|
|
64
|
+
* 判断是否是元素列表
|
|
65
|
+
* @param $ele
|
|
66
|
+
*/
|
|
67
|
+
isNodeList($ele: any): $ele is any[] | NodeList;
|
|
63
68
|
};
|
|
64
69
|
export { DOMUtilsCommonUtils };
|
|
@@ -417,4 +417,13 @@ export declare class DOMUtilsEvent {
|
|
|
417
417
|
*/
|
|
418
418
|
selectorAll<K extends keyof HTMLElementTagNameMap>(selector: K): HTMLElementTagNameMap[K][];
|
|
419
419
|
selectorAll<E extends Element = Element>(selector: string): E[];
|
|
420
|
+
/**
|
|
421
|
+
* 匹配元素,可使用以下的额外语法
|
|
422
|
+
*/
|
|
423
|
+
matches($el: HTMLElement | Element | null | undefined, selector: string): boolean;
|
|
424
|
+
/**
|
|
425
|
+
* 根据选择器获取上层元素,可使用以下的额外语法
|
|
426
|
+
*/
|
|
427
|
+
closest<K extends keyof HTMLElementTagNameMap>($el: HTMLElement | Element, selector: string): HTMLElementTagNameMap[K] | null;
|
|
428
|
+
closest<E extends Element = Element>($el: HTMLElement | Element, selector: string): E | null;
|
|
420
429
|
}
|
package/package.json
CHANGED
package/src/DOMUtils.ts
CHANGED
|
@@ -7,20 +7,12 @@ import {
|
|
|
7
7
|
} from "./types/global";
|
|
8
8
|
import type { WindowApiOption } from "./types/WindowApi";
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
* 判断是否是元素列表
|
|
12
|
-
* @param $ele
|
|
13
|
-
*/
|
|
14
|
-
export const isNodeList = ($ele: any): $ele is any[] | NodeList => {
|
|
15
|
-
return Array.isArray($ele) || $ele instanceof NodeList;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
10
|
class DOMUtils extends DOMUtilsEvent {
|
|
19
11
|
constructor(option?: WindowApiOption) {
|
|
20
12
|
super(option);
|
|
21
13
|
}
|
|
22
14
|
/** 版本号 */
|
|
23
|
-
version = "2025.5.
|
|
15
|
+
version = "2025.5.30";
|
|
24
16
|
/**
|
|
25
17
|
* 获取元素的属性值
|
|
26
18
|
* @param element 目标元素
|
|
@@ -55,7 +47,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
55
47
|
if (element == null) {
|
|
56
48
|
return;
|
|
57
49
|
}
|
|
58
|
-
if (isNodeList(element)) {
|
|
50
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
59
51
|
if (attrValue == null) {
|
|
60
52
|
// 获取属性
|
|
61
53
|
return DOMUtilsContext.attr(
|
|
@@ -155,7 +147,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
155
147
|
* */
|
|
156
148
|
css(
|
|
157
149
|
element: DOMUtilsTargetElementType,
|
|
158
|
-
property: keyof CSSStyleDeclaration
|
|
150
|
+
property: keyof Omit<CSSStyleDeclaration, "zIndex"> | "z-index"
|
|
159
151
|
): string;
|
|
160
152
|
/**
|
|
161
153
|
* 获取元素的样式属性值
|
|
@@ -186,7 +178,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
186
178
|
* */
|
|
187
179
|
css(
|
|
188
180
|
element: DOMUtilsTargetElementType,
|
|
189
|
-
property: keyof CSSStyleDeclaration & string,
|
|
181
|
+
property: (keyof Omit<CSSStyleDeclaration, "zIndex"> | "z-index") & string,
|
|
190
182
|
value: string | number
|
|
191
183
|
): string;
|
|
192
184
|
/**
|
|
@@ -207,7 +199,13 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
207
199
|
element: DOMUtilsTargetElementType,
|
|
208
200
|
property:
|
|
209
201
|
| {
|
|
210
|
-
[P in keyof
|
|
202
|
+
[P in keyof Omit<
|
|
203
|
+
CSSStyleDeclaration,
|
|
204
|
+
"zIndex"
|
|
205
|
+
>]?: CSSStyleDeclaration[P];
|
|
206
|
+
}
|
|
207
|
+
| {
|
|
208
|
+
"z-index": string | number;
|
|
211
209
|
}
|
|
212
210
|
| {
|
|
213
211
|
[key: string]: string | number;
|
|
@@ -216,10 +214,10 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
216
214
|
css(
|
|
217
215
|
element: DOMUtilsTargetElementType,
|
|
218
216
|
property:
|
|
219
|
-
| keyof CSSStyleDeclaration
|
|
217
|
+
| keyof Omit<CSSStyleDeclaration, "zIndex">
|
|
220
218
|
| string
|
|
221
219
|
| {
|
|
222
|
-
[P in keyof CSSStyleDeclaration]?:
|
|
220
|
+
[P in keyof Omit<CSSStyleDeclaration, "zIndex">]?:
|
|
223
221
|
| string
|
|
224
222
|
| number
|
|
225
223
|
| CSSStyleDeclaration[P];
|
|
@@ -258,7 +256,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
258
256
|
if (element == null) {
|
|
259
257
|
return;
|
|
260
258
|
}
|
|
261
|
-
if (isNodeList(element)) {
|
|
259
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
262
260
|
if (typeof property === "string") {
|
|
263
261
|
if (value == null) {
|
|
264
262
|
// 获取属性
|
|
@@ -350,7 +348,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
350
348
|
if (element == null) {
|
|
351
349
|
return;
|
|
352
350
|
}
|
|
353
|
-
if (isNodeList(element)) {
|
|
351
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
354
352
|
if (text == null) {
|
|
355
353
|
// 获取
|
|
356
354
|
return DOMUtilsContext.text(element[0] as HTMLElement);
|
|
@@ -411,7 +409,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
411
409
|
if (element == null) {
|
|
412
410
|
return;
|
|
413
411
|
}
|
|
414
|
-
if (isNodeList(element)) {
|
|
412
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
415
413
|
if (html == null) {
|
|
416
414
|
// 获取
|
|
417
415
|
return DOMUtilsContext.html(element[0] as HTMLElement);
|
|
@@ -550,7 +548,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
550
548
|
if (element == null) {
|
|
551
549
|
return;
|
|
552
550
|
}
|
|
553
|
-
if (isNodeList(element)) {
|
|
551
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
554
552
|
if (value == null) {
|
|
555
553
|
// 获取
|
|
556
554
|
return DOMUtilsContext.val(element[0] as HTMLInputElement);
|
|
@@ -620,7 +618,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
620
618
|
if (element == null) {
|
|
621
619
|
return;
|
|
622
620
|
}
|
|
623
|
-
if (isNodeList(element)) {
|
|
621
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
624
622
|
if (propValue == null) {
|
|
625
623
|
// 获取
|
|
626
624
|
return DOMUtilsContext.prop(element[0] as HTMLElement, propName);
|
|
@@ -659,7 +657,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
659
657
|
if (element == null) {
|
|
660
658
|
return;
|
|
661
659
|
}
|
|
662
|
-
if (isNodeList(element)) {
|
|
660
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
663
661
|
// 设置
|
|
664
662
|
element.forEach(($ele) => {
|
|
665
663
|
DOMUtilsContext.removeAttr($ele as HTMLElement, attrName);
|
|
@@ -688,7 +686,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
688
686
|
if (element == null) {
|
|
689
687
|
return;
|
|
690
688
|
}
|
|
691
|
-
if (isNodeList(element)) {
|
|
689
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
692
690
|
// 设置
|
|
693
691
|
element.forEach(($ele) => {
|
|
694
692
|
DOMUtilsContext.removeClass($ele as HTMLElement, className);
|
|
@@ -724,7 +722,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
724
722
|
if (element == null) {
|
|
725
723
|
return;
|
|
726
724
|
}
|
|
727
|
-
if (isNodeList(element)) {
|
|
725
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
728
726
|
// 设置
|
|
729
727
|
element.forEach(($ele) => {
|
|
730
728
|
DOMUtilsContext.removeProp($ele as HTMLElement, propName);
|
|
@@ -753,7 +751,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
753
751
|
if (element == null) {
|
|
754
752
|
return;
|
|
755
753
|
}
|
|
756
|
-
if (isNodeList(element)) {
|
|
754
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
757
755
|
// 设置
|
|
758
756
|
element.forEach(($ele) => {
|
|
759
757
|
DOMUtilsContext.replaceWith($ele as HTMLElement, newElement);
|
|
@@ -782,7 +780,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
782
780
|
if (element == null) {
|
|
783
781
|
return;
|
|
784
782
|
}
|
|
785
|
-
if (isNodeList(element)) {
|
|
783
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
786
784
|
// 设置
|
|
787
785
|
element.forEach(($ele) => {
|
|
788
786
|
DOMUtilsContext.addClass($ele as HTMLElement, className);
|
|
@@ -815,7 +813,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
815
813
|
if (element == null) {
|
|
816
814
|
return false;
|
|
817
815
|
}
|
|
818
|
-
if (isNodeList(element)) {
|
|
816
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
819
817
|
let flag = true;
|
|
820
818
|
for (let index = 0; index < element.length; index++) {
|
|
821
819
|
const $ele = element[index] as HTMLElement;
|
|
@@ -862,7 +860,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
862
860
|
return;
|
|
863
861
|
}
|
|
864
862
|
|
|
865
|
-
if (isNodeList(element)) {
|
|
863
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
866
864
|
// 设置
|
|
867
865
|
element.forEach(($ele) => {
|
|
868
866
|
DOMUtilsContext.append($ele as HTMLElement, content);
|
|
@@ -911,7 +909,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
911
909
|
if (element == null) {
|
|
912
910
|
return;
|
|
913
911
|
}
|
|
914
|
-
if (isNodeList(element)) {
|
|
912
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
915
913
|
// 设置
|
|
916
914
|
element.forEach(($ele) => {
|
|
917
915
|
DOMUtilsContext.prepend($ele as HTMLElement, content);
|
|
@@ -949,7 +947,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
949
947
|
if (element == null) {
|
|
950
948
|
return;
|
|
951
949
|
}
|
|
952
|
-
if (isNodeList(element)) {
|
|
950
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
953
951
|
// 设置
|
|
954
952
|
element.forEach(($ele) => {
|
|
955
953
|
DOMUtilsContext.after($ele as HTMLElement, content);
|
|
@@ -989,7 +987,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
989
987
|
if (element == null) {
|
|
990
988
|
return;
|
|
991
989
|
}
|
|
992
|
-
if (isNodeList(element)) {
|
|
990
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
993
991
|
// 设置
|
|
994
992
|
element.forEach(($ele) => {
|
|
995
993
|
DOMUtilsContext.before($ele as HTMLElement, content);
|
|
@@ -1027,7 +1025,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1027
1025
|
if (element == null) {
|
|
1028
1026
|
return;
|
|
1029
1027
|
}
|
|
1030
|
-
if (isNodeList(element)) {
|
|
1028
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1031
1029
|
element.forEach(($ele) => {
|
|
1032
1030
|
DOMUtilsContext.remove($ele as HTMLElement);
|
|
1033
1031
|
});
|
|
@@ -1051,7 +1049,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1051
1049
|
if (element == null) {
|
|
1052
1050
|
return;
|
|
1053
1051
|
}
|
|
1054
|
-
if (isNodeList(element)) {
|
|
1052
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1055
1053
|
// 设置
|
|
1056
1054
|
element.forEach(($ele) => {
|
|
1057
1055
|
DOMUtilsContext.empty($ele as HTMLElement);
|
|
@@ -1419,7 +1417,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1419
1417
|
if (element == null) {
|
|
1420
1418
|
return;
|
|
1421
1419
|
}
|
|
1422
|
-
if (isNodeList(element)) {
|
|
1420
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1423
1421
|
// 设置
|
|
1424
1422
|
element.forEach(($ele) => {
|
|
1425
1423
|
DOMUtilsContext.animate(
|
|
@@ -1490,7 +1488,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1490
1488
|
if (element == null) {
|
|
1491
1489
|
return;
|
|
1492
1490
|
}
|
|
1493
|
-
if (isNodeList(element)) {
|
|
1491
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1494
1492
|
// 设置
|
|
1495
1493
|
element.forEach(($ele) => {
|
|
1496
1494
|
DOMUtilsContext.wrap($ele as HTMLElement, wrapperHTML);
|
|
@@ -1630,7 +1628,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1630
1628
|
if (element == null) {
|
|
1631
1629
|
return;
|
|
1632
1630
|
}
|
|
1633
|
-
if (isNodeList(element)) {
|
|
1631
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1634
1632
|
let resultArray: HTMLElement[] = [];
|
|
1635
1633
|
element.forEach(($ele) => {
|
|
1636
1634
|
resultArray.push(DOMUtilsContext.parent($ele as HTMLElement));
|
|
@@ -1854,7 +1852,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1854
1852
|
if (typeof element === "string") {
|
|
1855
1853
|
element = DOMUtilsContext.selectorAll(element);
|
|
1856
1854
|
}
|
|
1857
|
-
if (isNodeList(element)) {
|
|
1855
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1858
1856
|
// 设置
|
|
1859
1857
|
element.forEach(($ele) => {
|
|
1860
1858
|
DOMUtilsContext.fadeIn($ele as HTMLElement, duration, callback);
|
|
@@ -1907,7 +1905,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1907
1905
|
if (typeof element === "string") {
|
|
1908
1906
|
element = DOMUtilsContext.selectorAll(element);
|
|
1909
1907
|
}
|
|
1910
|
-
if (isNodeList(element)) {
|
|
1908
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1911
1909
|
// 设置
|
|
1912
1910
|
element.forEach(($ele) => {
|
|
1913
1911
|
DOMUtilsContext.fadeOut($ele as HTMLElement, duration, callback);
|
|
@@ -1951,7 +1949,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1951
1949
|
if (element == null) {
|
|
1952
1950
|
return;
|
|
1953
1951
|
}
|
|
1954
|
-
if (isNodeList(element)) {
|
|
1952
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1955
1953
|
// 设置
|
|
1956
1954
|
element.forEach(($ele) => {
|
|
1957
1955
|
DOMUtilsContext.toggle($ele as HTMLElement);
|
|
@@ -184,5 +184,12 @@ const DOMUtilsCommonUtils = {
|
|
|
184
184
|
globalThis.clearInterval(timeId);
|
|
185
185
|
}
|
|
186
186
|
},
|
|
187
|
+
/**
|
|
188
|
+
* 判断是否是元素列表
|
|
189
|
+
* @param $ele
|
|
190
|
+
*/
|
|
191
|
+
isNodeList($ele: any): $ele is any[] | NodeList {
|
|
192
|
+
return Array.isArray($ele) || $ele instanceof NodeList;
|
|
193
|
+
},
|
|
187
194
|
};
|
|
188
195
|
export { DOMUtilsCommonUtils };
|
package/src/DOMUtilsEvent.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { isNodeList } from "./DOMUtils";
|
|
2
1
|
import { DOMUtilsCommonUtils } from "./DOMUtilsCommonUtils";
|
|
3
2
|
import { DOMUtilsData } from "./DOMUtilsData";
|
|
4
3
|
import { OriginPrototype } from "./DOMUtilsOriginPrototype";
|
|
@@ -279,13 +278,15 @@ export class DOMUtilsEvent {
|
|
|
279
278
|
: elementItem;
|
|
280
279
|
let findValue = selectorList.find((selectorItem) => {
|
|
281
280
|
// 判断目标元素是否匹配选择器
|
|
282
|
-
if (
|
|
281
|
+
if (DOMUtilsContext.matches(eventTarget, selectorItem)) {
|
|
283
282
|
/* 当前目标可以被selector所匹配到 */
|
|
284
283
|
return true;
|
|
285
284
|
}
|
|
286
285
|
/* 在上层与主元素之间寻找可以被selector所匹配到的 */
|
|
287
|
-
let $closestMatches =
|
|
288
|
-
eventTarget
|
|
286
|
+
let $closestMatches = DOMUtilsContext.closest<HTMLElement>(
|
|
287
|
+
eventTarget,
|
|
288
|
+
selectorItem
|
|
289
|
+
);
|
|
289
290
|
if ($closestMatches && totalParent?.contains($closestMatches)) {
|
|
290
291
|
eventTarget = $closestMatches;
|
|
291
292
|
return true;
|
|
@@ -910,7 +911,7 @@ export class DOMUtilsEvent {
|
|
|
910
911
|
if (element == null) {
|
|
911
912
|
return;
|
|
912
913
|
}
|
|
913
|
-
if (isNodeList(element)) {
|
|
914
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
914
915
|
// 设置
|
|
915
916
|
element.forEach(($ele) => {
|
|
916
917
|
DOMUtilsContext.click(
|
|
@@ -960,7 +961,7 @@ export class DOMUtilsEvent {
|
|
|
960
961
|
if (element == null) {
|
|
961
962
|
return;
|
|
962
963
|
}
|
|
963
|
-
if (isNodeList(element)) {
|
|
964
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
964
965
|
// 设置
|
|
965
966
|
element.forEach(($ele) => {
|
|
966
967
|
DOMUtilsContext.focus(
|
|
@@ -1015,7 +1016,7 @@ export class DOMUtilsEvent {
|
|
|
1015
1016
|
if (element == null) {
|
|
1016
1017
|
return;
|
|
1017
1018
|
}
|
|
1018
|
-
if (isNodeList(element)) {
|
|
1019
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1019
1020
|
// 设置
|
|
1020
1021
|
element.forEach(($ele) => {
|
|
1021
1022
|
DOMUtilsContext.focus(
|
|
@@ -1064,7 +1065,7 @@ export class DOMUtilsEvent {
|
|
|
1064
1065
|
if (element == null) {
|
|
1065
1066
|
return;
|
|
1066
1067
|
}
|
|
1067
|
-
if (isNodeList(element)) {
|
|
1068
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1068
1069
|
// 设置
|
|
1069
1070
|
element.forEach(($ele) => {
|
|
1070
1071
|
DOMUtilsContext.hover($ele as HTMLElement, handler, option);
|
|
@@ -1101,7 +1102,7 @@ export class DOMUtilsEvent {
|
|
|
1101
1102
|
if (typeof element === "string") {
|
|
1102
1103
|
element = DOMUtilsContext.selectorAll(element);
|
|
1103
1104
|
}
|
|
1104
|
-
if (isNodeList(element)) {
|
|
1105
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1105
1106
|
// 设置
|
|
1106
1107
|
element.forEach(($ele) => {
|
|
1107
1108
|
DOMUtilsContext.keyup($ele as HTMLElement, handler, option);
|
|
@@ -1137,7 +1138,7 @@ export class DOMUtilsEvent {
|
|
|
1137
1138
|
if (typeof element === "string") {
|
|
1138
1139
|
element = DOMUtilsContext.selectorAll(element);
|
|
1139
1140
|
}
|
|
1140
|
-
if (isNodeList(element)) {
|
|
1141
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1141
1142
|
// 设置
|
|
1142
1143
|
element.forEach(($ele) => {
|
|
1143
1144
|
DOMUtilsContext.keydown($ele as HTMLElement, handler, option);
|
|
@@ -1173,7 +1174,7 @@ export class DOMUtilsEvent {
|
|
|
1173
1174
|
if (typeof element === "string") {
|
|
1174
1175
|
element = DOMUtilsContext.selectorAll(element);
|
|
1175
1176
|
}
|
|
1176
|
-
if (isNodeList(element)) {
|
|
1177
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1177
1178
|
// 设置
|
|
1178
1179
|
element.forEach(($ele) => {
|
|
1179
1180
|
DOMUtilsContext.keypress($ele as HTMLElement, handler, option);
|
|
@@ -1394,4 +1395,132 @@ export class DOMUtilsEvent {
|
|
|
1394
1395
|
);
|
|
1395
1396
|
}
|
|
1396
1397
|
}
|
|
1398
|
+
/**
|
|
1399
|
+
* 匹配元素,可使用以下的额外语法
|
|
1400
|
+
*/
|
|
1401
|
+
matches(
|
|
1402
|
+
$el: HTMLElement | Element | null | undefined,
|
|
1403
|
+
selector: string
|
|
1404
|
+
): boolean {
|
|
1405
|
+
selector = selector.trim();
|
|
1406
|
+
if ($el == null) {
|
|
1407
|
+
return false;
|
|
1408
|
+
}
|
|
1409
|
+
|
|
1410
|
+
if (selector.match(/[^\s]{1}:empty$/gi)) {
|
|
1411
|
+
// empty 语法
|
|
1412
|
+
selector = selector.replace(/:empty$/gi, "");
|
|
1413
|
+
return $el.matches(selector) && $el?.innerHTML?.trim() === "";
|
|
1414
|
+
} else if (
|
|
1415
|
+
selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
|
|
1416
|
+
selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)
|
|
1417
|
+
) {
|
|
1418
|
+
// contains 语法
|
|
1419
|
+
let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
|
|
1420
|
+
let text = textMatch![2];
|
|
1421
|
+
selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
|
|
1422
|
+
// @ts-ignore
|
|
1423
|
+
let content = $el?.textContent || $el?.innerText;
|
|
1424
|
+
if (typeof content !== "string") {
|
|
1425
|
+
content = "";
|
|
1426
|
+
}
|
|
1427
|
+
return $el.matches(selector) && content?.includes(text);
|
|
1428
|
+
} else if (
|
|
1429
|
+
selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
|
|
1430
|
+
selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)
|
|
1431
|
+
) {
|
|
1432
|
+
// regexp 语法
|
|
1433
|
+
let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
|
|
1434
|
+
let pattern = textMatch![2];
|
|
1435
|
+
let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
|
|
1436
|
+
let flags = "";
|
|
1437
|
+
if (flagMatch) {
|
|
1438
|
+
pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
|
|
1439
|
+
flags = flagMatch[3];
|
|
1440
|
+
}
|
|
1441
|
+
let regexp = new RegExp(pattern, flags);
|
|
1442
|
+
selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
|
|
1443
|
+
// @ts-ignore
|
|
1444
|
+
let content = $el?.textContent || $el?.innerText;
|
|
1445
|
+
if (typeof content !== "string") {
|
|
1446
|
+
content = "";
|
|
1447
|
+
}
|
|
1448
|
+
return $el.matches(selector) && Boolean(content?.match(regexp));
|
|
1449
|
+
} else {
|
|
1450
|
+
// 普通语法
|
|
1451
|
+
return $el.matches(selector);
|
|
1452
|
+
}
|
|
1453
|
+
}
|
|
1454
|
+
/**
|
|
1455
|
+
* 根据选择器获取上层元素,可使用以下的额外语法
|
|
1456
|
+
*/
|
|
1457
|
+
closest<K extends keyof HTMLElementTagNameMap>(
|
|
1458
|
+
$el: HTMLElement | Element,
|
|
1459
|
+
selector: string
|
|
1460
|
+
): HTMLElementTagNameMap[K] | null;
|
|
1461
|
+
closest<E extends Element = Element>(
|
|
1462
|
+
$el: HTMLElement | Element,
|
|
1463
|
+
selector: string
|
|
1464
|
+
): E | null;
|
|
1465
|
+
closest<E extends Element = Element>(
|
|
1466
|
+
$el: HTMLElement | Element,
|
|
1467
|
+
selector: string
|
|
1468
|
+
): E | null {
|
|
1469
|
+
selector = selector.trim();
|
|
1470
|
+
|
|
1471
|
+
if (selector.match(/[^\s]{1}:empty$/gi)) {
|
|
1472
|
+
// empty 语法
|
|
1473
|
+
selector = selector.replace(/:empty$/gi, "");
|
|
1474
|
+
let $closest = $el?.closest<E>(selector);
|
|
1475
|
+
if ($closest && $closest?.innerHTML?.trim() === "") {
|
|
1476
|
+
return $closest;
|
|
1477
|
+
}
|
|
1478
|
+
return null;
|
|
1479
|
+
} else if (
|
|
1480
|
+
selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
|
|
1481
|
+
selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)
|
|
1482
|
+
) {
|
|
1483
|
+
// contains 语法
|
|
1484
|
+
let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
|
|
1485
|
+
let text = textMatch![2];
|
|
1486
|
+
selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
|
|
1487
|
+
let $closest = $el?.closest<E>(selector);
|
|
1488
|
+
if ($closest) {
|
|
1489
|
+
// @ts-ignore
|
|
1490
|
+
let content = $el?.textContent || $el?.innerText;
|
|
1491
|
+
if (typeof content === "string" && content.includes(text)) {
|
|
1492
|
+
return $closest;
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
return null;
|
|
1496
|
+
} else if (
|
|
1497
|
+
selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
|
|
1498
|
+
selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)
|
|
1499
|
+
) {
|
|
1500
|
+
// regexp 语法
|
|
1501
|
+
let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
|
|
1502
|
+
let pattern = textMatch![2];
|
|
1503
|
+
let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
|
|
1504
|
+
let flags = "";
|
|
1505
|
+
if (flagMatch) {
|
|
1506
|
+
pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
|
|
1507
|
+
flags = flagMatch[3];
|
|
1508
|
+
}
|
|
1509
|
+
let regexp = new RegExp(pattern, flags);
|
|
1510
|
+
selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
|
|
1511
|
+
let $closest = $el?.closest<E>(selector);
|
|
1512
|
+
if ($closest) {
|
|
1513
|
+
// @ts-ignore
|
|
1514
|
+
let content = $el?.textContent || $el?.innerText;
|
|
1515
|
+
if (typeof content === "string" && content.match(regexp)) {
|
|
1516
|
+
return $closest;
|
|
1517
|
+
}
|
|
1518
|
+
}
|
|
1519
|
+
return null;
|
|
1520
|
+
} else {
|
|
1521
|
+
// 普通语法
|
|
1522
|
+
let $closest = $el?.closest<E>(selector);
|
|
1523
|
+
return $closest;
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1397
1526
|
}
|