@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.
@@ -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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@whitesev/domutils",
4
- "version": "1.6.0",
4
+ "version": "1.6.2",
5
5
  "type": "module",
6
6
  "description": "使用js重新对jQuery的部分函数进行了仿写",
7
7
  "main": "dist/index.cjs.js",
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.9";
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(element: DOMUtilsTargetElementType, attrName: string, attrValue: string | boolean | number): void;
35
- attr(element: DOMUtilsTargetElementType, attrName: string, attrValue?: any) {
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(element: DOMUtilsTargetElementType, className?: string | string[] | undefined | null) {
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 };
@@ -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事件。