@whitesev/domutils 1.6.0 → 1.6.2
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 +87 -1
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +87 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +87 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +87 -1
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +87 -1
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +87 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/DOMUtils.d.ts +10 -6
- package/dist/types/src/DOMUtilsCommonUtils.d.ts +4 -0
- package/dist/types/src/DOMUtilsEvent.d.ts +18 -0
- package/package.json +1 -1
- package/src/DOMUtils.ts +23 -8
- package/src/DOMUtilsCommonUtils.ts +8 -0
- package/src/DOMUtilsEvent.ts +81 -4
|
@@ -262,6 +262,24 @@ export declare class DOMUtilsEvent {
|
|
|
262
262
|
* })
|
|
263
263
|
*/
|
|
264
264
|
hover(element: DOMUtilsTargetElementType, handler: (this: HTMLElement, event: DOMUtils_Event["hover"]) => void, option?: boolean | DOMUtilsEventListenerOption): void;
|
|
265
|
+
/**
|
|
266
|
+
* 当动画结束时触发事件
|
|
267
|
+
* @param element 监听的元素
|
|
268
|
+
* @param handler 触发的回调函数
|
|
269
|
+
* @param option 配置项,这里默认配置once为true
|
|
270
|
+
*/
|
|
271
|
+
animationend(element: HTMLElement | string, handler: (this: HTMLElement, event: DOMUtils_Event["animationend"]) => void, option?: boolean | DOMUtilsEventListenerOption): {
|
|
272
|
+
off(): void;
|
|
273
|
+
} | undefined;
|
|
274
|
+
/**
|
|
275
|
+
* 当过渡结束时触发事件
|
|
276
|
+
* @param element 监听的元素
|
|
277
|
+
* @param handler 触发的回调函数
|
|
278
|
+
* @param option 配置项,这里默认配置once为true
|
|
279
|
+
*/
|
|
280
|
+
transitionend(element: HTMLElement | string, handler: (this: HTMLElement, event: DOMUtils_Event["transitionend"]) => void, option?: boolean | DOMUtilsEventListenerOption): {
|
|
281
|
+
off(): void;
|
|
282
|
+
} | undefined;
|
|
265
283
|
/**
|
|
266
284
|
* 当按键松开时触发事件
|
|
267
285
|
* keydown - > keypress - > keyup
|
package/package.json
CHANGED
package/src/DOMUtils.ts
CHANGED
|
@@ -9,7 +9,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
9
9
|
super(option);
|
|
10
10
|
}
|
|
11
11
|
/** 版本号 */
|
|
12
|
-
version = "2025.8.
|
|
12
|
+
version = "2025.8.11";
|
|
13
13
|
/**
|
|
14
14
|
* 获取元素的属性值
|
|
15
15
|
* @param element 目标元素
|
|
@@ -20,7 +20,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
20
20
|
* DOMUtils.attr("a.xx","href");
|
|
21
21
|
* > https://xxxx....
|
|
22
22
|
*/
|
|
23
|
-
attr(element: DOMUtilsTargetElementType, attrName: string): string;
|
|
23
|
+
attr(element: DOMUtilsTargetElementType | Element, attrName: string): string;
|
|
24
24
|
/**
|
|
25
25
|
* 设置元素的属性值
|
|
26
26
|
* @param element 目标元素
|
|
@@ -31,8 +31,12 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
31
31
|
* DOMUtils.attr(document.querySelector("a.xx"),"href","abcd");
|
|
32
32
|
* DOMUtils.attr("a.xx","href","abcd");
|
|
33
33
|
*/
|
|
34
|
-
attr(
|
|
35
|
-
|
|
34
|
+
attr(
|
|
35
|
+
element: DOMUtilsTargetElementType | Element,
|
|
36
|
+
attrName: string,
|
|
37
|
+
attrValue: string | boolean | number
|
|
38
|
+
): void;
|
|
39
|
+
attr(element: DOMUtilsTargetElementType | Element, attrName: string, attrValue?: any) {
|
|
36
40
|
let DOMUtilsContext = this;
|
|
37
41
|
if (typeof element === "string") {
|
|
38
42
|
element = DOMUtilsContext.selectorAll(element);
|
|
@@ -600,7 +604,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
600
604
|
* DOMUtils.removeAttr(document.querySelector("a.xx"),"data-value")
|
|
601
605
|
* DOMUtils.removeAttr("a.xx","data-value")
|
|
602
606
|
* */
|
|
603
|
-
removeAttr(element: DOMUtilsTargetElementType, attrName: string) {
|
|
607
|
+
removeAttr(element: DOMUtilsTargetElementType | Element, attrName: string) {
|
|
604
608
|
let DOMUtilsContext = this;
|
|
605
609
|
if (typeof element === "string") {
|
|
606
610
|
element = DOMUtilsContext.selectorAll(element);
|
|
@@ -626,7 +630,10 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
626
630
|
* DOMUtils.removeClass(document.querySelector("a.xx"),"xx")
|
|
627
631
|
* DOMUtils.removeClass("a.xx","xx")
|
|
628
632
|
*/
|
|
629
|
-
removeClass(
|
|
633
|
+
removeClass(
|
|
634
|
+
element: DOMUtilsTargetElementType | Element,
|
|
635
|
+
className?: string | string[] | undefined | null
|
|
636
|
+
) {
|
|
630
637
|
let DOMUtilsContext = this;
|
|
631
638
|
if (typeof element === "string") {
|
|
632
639
|
element = DOMUtilsContext.selectorAll(element);
|
|
@@ -717,7 +724,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
717
724
|
* DOMUtils.addClass(document.querySelector("a.xx"),"_vue_")
|
|
718
725
|
* DOMUtils.addClass("a.xx","_vue_")
|
|
719
726
|
* */
|
|
720
|
-
addClass(element: DOMUtilsTargetElementType, className: string | string[]) {
|
|
727
|
+
addClass(element: DOMUtilsTargetElementType | Element, className: string | string[]) {
|
|
721
728
|
let DOMUtilsContext = this;
|
|
722
729
|
if (typeof element === "string") {
|
|
723
730
|
element = DOMUtilsContext.selectorAll(element);
|
|
@@ -747,7 +754,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
747
754
|
* @param element
|
|
748
755
|
* @param className
|
|
749
756
|
*/
|
|
750
|
-
hasClass(element: DOMUtilsTargetElementType, className: string | string[]): boolean {
|
|
757
|
+
hasClass(element: DOMUtilsTargetElementType | Element, className: string | string[]): boolean {
|
|
751
758
|
let DOMUtilsContext = this;
|
|
752
759
|
if (typeof element === "string") {
|
|
753
760
|
element = DOMUtilsContext.selectorAll(element);
|
|
@@ -1967,6 +1974,14 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1967
1974
|
return isNumber ? parseFloat(val) : val;
|
|
1968
1975
|
}
|
|
1969
1976
|
}
|
|
1977
|
+
/** 获取 animationend 在各个浏览器的兼容名 */
|
|
1978
|
+
getAnimationEndNameList() {
|
|
1979
|
+
return DOMUtilsCommonUtils.getAnimationEndNameList();
|
|
1980
|
+
}
|
|
1981
|
+
/** 获取 transitionend 在各个浏览器的兼容名 */
|
|
1982
|
+
getTransitionEndNameList() {
|
|
1983
|
+
return DOMUtilsCommonUtils.getTransitionEndNameList();
|
|
1984
|
+
}
|
|
1970
1985
|
}
|
|
1971
1986
|
|
|
1972
1987
|
let domUtils = new DOMUtils();
|
|
@@ -188,5 +188,13 @@ const DOMUtilsCommonUtils = {
|
|
|
188
188
|
isNodeList($ele: any): $ele is any[] | NodeList {
|
|
189
189
|
return Array.isArray($ele) || $ele instanceof NodeList;
|
|
190
190
|
},
|
|
191
|
+
/** 获取 animationend 在各个浏览器的兼容名 */
|
|
192
|
+
getAnimationEndNameList() {
|
|
193
|
+
return ["webkitAnimationEnd", "mozAnimationEnd", "MSAnimationEnd", "oanimationend", "animationend"];
|
|
194
|
+
},
|
|
195
|
+
/** 获取 transitionend 在各个浏览器的兼容名 */
|
|
196
|
+
getTransitionEndNameList() {
|
|
197
|
+
return ["webkitTransitionEnd", "mozTransitionEnd", "MSTransitionEnd", "otransitionend", "transitionend"];
|
|
198
|
+
},
|
|
191
199
|
};
|
|
192
200
|
export { DOMUtilsCommonUtils };
|
package/src/DOMUtilsEvent.ts
CHANGED
|
@@ -882,7 +882,7 @@ export class DOMUtilsEvent {
|
|
|
882
882
|
) {
|
|
883
883
|
let DOMUtilsContext = this;
|
|
884
884
|
if (typeof element === "string") {
|
|
885
|
-
element = DOMUtilsContext.selectorAll(element);
|
|
885
|
+
element = DOMUtilsContext.selectorAll<HTMLElement>(element);
|
|
886
886
|
}
|
|
887
887
|
if (element == null) {
|
|
888
888
|
return;
|
|
@@ -922,7 +922,7 @@ export class DOMUtilsEvent {
|
|
|
922
922
|
) {
|
|
923
923
|
let DOMUtilsContext = this;
|
|
924
924
|
if (typeof element === "string") {
|
|
925
|
-
element = DOMUtilsContext.selectorAll(element);
|
|
925
|
+
element = DOMUtilsContext.selectorAll<HTMLElement>(element);
|
|
926
926
|
}
|
|
927
927
|
if (element == null) {
|
|
928
928
|
return;
|
|
@@ -961,7 +961,7 @@ export class DOMUtilsEvent {
|
|
|
961
961
|
) {
|
|
962
962
|
let DOMUtilsContext = this;
|
|
963
963
|
if (typeof element === "string") {
|
|
964
|
-
element = DOMUtilsContext.selectorAll(element);
|
|
964
|
+
element = DOMUtilsContext.selectorAll<HTMLElement>(element);
|
|
965
965
|
}
|
|
966
966
|
if (element == null) {
|
|
967
967
|
return;
|
|
@@ -976,6 +976,84 @@ export class DOMUtilsEvent {
|
|
|
976
976
|
DOMUtilsContext.on(element, "mouseenter", null, handler, option);
|
|
977
977
|
DOMUtilsContext.on(element, "mouseleave", null, handler, option);
|
|
978
978
|
}
|
|
979
|
+
/**
|
|
980
|
+
* 当动画结束时触发事件
|
|
981
|
+
* @param element 监听的元素
|
|
982
|
+
* @param handler 触发的回调函数
|
|
983
|
+
* @param option 配置项,这里默认配置once为true
|
|
984
|
+
*/
|
|
985
|
+
animationend(
|
|
986
|
+
element: HTMLElement | string,
|
|
987
|
+
handler: (this: HTMLElement, event: DOMUtils_Event["animationend"]) => void,
|
|
988
|
+
option?: boolean | DOMUtilsEventListenerOption
|
|
989
|
+
) {
|
|
990
|
+
let DOMUtilsContext = this;
|
|
991
|
+
if (typeof element === "string") {
|
|
992
|
+
element = DOMUtilsContext.selector<HTMLElement>(element)!;
|
|
993
|
+
}
|
|
994
|
+
if (element == null) {
|
|
995
|
+
return;
|
|
996
|
+
}
|
|
997
|
+
// if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
998
|
+
// // 设置
|
|
999
|
+
// element.forEach(($ele) => {
|
|
1000
|
+
// DOMUtilsContext.animationend($ele as HTMLElement, handler, option);
|
|
1001
|
+
// });
|
|
1002
|
+
// return;
|
|
1003
|
+
// }
|
|
1004
|
+
const defaultOption: DOMUtilsEventListenerOption = {
|
|
1005
|
+
once: true,
|
|
1006
|
+
};
|
|
1007
|
+
Object.assign(defaultOption, option || {});
|
|
1008
|
+
const eventNameList = DOMUtilsCommonUtils.getAnimationEndNameList();
|
|
1009
|
+
DOMUtilsContext.on(element, eventNameList, null, handler, defaultOption);
|
|
1010
|
+
if (!defaultOption.once) {
|
|
1011
|
+
return {
|
|
1012
|
+
off() {
|
|
1013
|
+
DOMUtilsContext.off(element, eventNameList, null, handler, defaultOption);
|
|
1014
|
+
},
|
|
1015
|
+
};
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
/**
|
|
1019
|
+
* 当过渡结束时触发事件
|
|
1020
|
+
* @param element 监听的元素
|
|
1021
|
+
* @param handler 触发的回调函数
|
|
1022
|
+
* @param option 配置项,这里默认配置once为true
|
|
1023
|
+
*/
|
|
1024
|
+
transitionend(
|
|
1025
|
+
element: HTMLElement | string,
|
|
1026
|
+
handler: (this: HTMLElement, event: DOMUtils_Event["transitionend"]) => void,
|
|
1027
|
+
option?: boolean | DOMUtilsEventListenerOption
|
|
1028
|
+
) {
|
|
1029
|
+
let DOMUtilsContext = this;
|
|
1030
|
+
if (typeof element === "string") {
|
|
1031
|
+
element = DOMUtilsContext.selector<HTMLElement>(element)!;
|
|
1032
|
+
}
|
|
1033
|
+
if (element == null) {
|
|
1034
|
+
return;
|
|
1035
|
+
}
|
|
1036
|
+
// if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1037
|
+
// // 设置
|
|
1038
|
+
// element.forEach(($ele) => {
|
|
1039
|
+
// DOMUtilsContext.transitionend($ele as HTMLElement, handler, option);
|
|
1040
|
+
// });
|
|
1041
|
+
// return;
|
|
1042
|
+
// }
|
|
1043
|
+
const defaultOption: DOMUtilsEventListenerOption = {
|
|
1044
|
+
once: true,
|
|
1045
|
+
};
|
|
1046
|
+
Object.assign(defaultOption, option || {});
|
|
1047
|
+
const eventNameList = DOMUtilsCommonUtils.getTransitionEndNameList();
|
|
1048
|
+
DOMUtilsContext.on(element, eventNameList, null, handler, defaultOption);
|
|
1049
|
+
if (!defaultOption.once) {
|
|
1050
|
+
return {
|
|
1051
|
+
off() {
|
|
1052
|
+
DOMUtilsContext.off(element, eventNameList, null, handler, defaultOption);
|
|
1053
|
+
},
|
|
1054
|
+
};
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
979
1057
|
/**
|
|
980
1058
|
* 当按键松开时触发事件
|
|
981
1059
|
* keydown - > keypress - > keyup
|
|
@@ -1084,7 +1162,6 @@ export class DOMUtilsEvent {
|
|
|
1084
1162
|
}
|
|
1085
1163
|
DOMUtilsContext.on(element, "keypress", null, handler, option);
|
|
1086
1164
|
}
|
|
1087
|
-
|
|
1088
1165
|
/**
|
|
1089
1166
|
* 监听某个元素键盘按键事件或window全局按键事件
|
|
1090
1167
|
* 按下有值的键时触发,按下Ctrl\Alt\Shift\Meta是无值键。按下先触发keydown事件,再触发keypress事件。
|