@whitesev/domutils 1.6.7 → 1.6.8
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 +21 -14
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +21 -14
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +21 -14
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +21 -14
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +21 -14
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +21 -14
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/DOMUtilsCommonUtils.d.ts +1 -1
- package/package.json +1 -1
- package/src/DOMUtils.ts +2 -2
- package/src/DOMUtilsCommonUtils.ts +2 -2
- package/src/DOMUtilsEvent.ts +22 -9
package/src/DOMUtilsEvent.ts
CHANGED
|
@@ -440,7 +440,7 @@ export class DOMUtilsEvent {
|
|
|
440
440
|
const currentParam: EventListenerOptions | boolean = args1[startIndex];
|
|
441
441
|
if (typeof currentParam === "boolean") {
|
|
442
442
|
option.capture = currentParam;
|
|
443
|
-
} else if (typeof currentParam === "object" && "capture" in currentParam) {
|
|
443
|
+
} else if (typeof currentParam === "object" && currentParam != null && "capture" in currentParam) {
|
|
444
444
|
option.capture = currentParam.capture;
|
|
445
445
|
}
|
|
446
446
|
return option;
|
|
@@ -507,18 +507,24 @@ export class DOMUtilsEvent {
|
|
|
507
507
|
// 目标函数、事件名、子元素选择器
|
|
508
508
|
isRemoveAll = true;
|
|
509
509
|
}
|
|
510
|
+
if (args.length === 5 && typeof args[4] === "function" && typeof filter !== "function") {
|
|
511
|
+
// 目标函数、事件名、回调函数、事件配置、过滤函数
|
|
512
|
+
filter = option as (
|
|
513
|
+
value: DOMUtilsEventListenerOptionsAttribute,
|
|
514
|
+
index: number,
|
|
515
|
+
array: DOMUtilsEventListenerOptionsAttribute[]
|
|
516
|
+
) => boolean;
|
|
517
|
+
}
|
|
510
518
|
elementList.forEach((elementItem) => {
|
|
511
519
|
/* 获取对象上的事件 */
|
|
512
520
|
const elementEvents: {
|
|
513
521
|
[key: string]: DOMUtilsEventListenerOptionsAttribute[];
|
|
514
522
|
} = Reflect.get(elementItem, DOMUtilsData.SymbolEvents) || {};
|
|
515
523
|
eventTypeList.forEach((eventName) => {
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
for (let index = 0; index < handlers.length; index++) {
|
|
521
|
-
const handler = handlers[index];
|
|
524
|
+
const handlers = elementEvents[eventName] || [];
|
|
525
|
+
const filterHandler = typeof filter === "function" ? handlers.filter(filter) : handlers;
|
|
526
|
+
for (let index = 0; index < filterHandler.length; index++) {
|
|
527
|
+
const handler = filterHandler[index];
|
|
522
528
|
let flag = true;
|
|
523
529
|
if (flag && listenerCallBack && handler.originCallBack !== listenerCallBack) {
|
|
524
530
|
// callback不同
|
|
@@ -530,13 +536,20 @@ export class DOMUtilsEvent {
|
|
|
530
536
|
flag = false;
|
|
531
537
|
}
|
|
532
538
|
}
|
|
533
|
-
if (
|
|
539
|
+
if (
|
|
540
|
+
flag &&
|
|
541
|
+
typeof handler.option.capture === "boolean" &&
|
|
542
|
+
listenerOption.capture !== handler.option.capture
|
|
543
|
+
) {
|
|
534
544
|
// 事件的配置项不同
|
|
535
545
|
flag = false;
|
|
536
546
|
}
|
|
537
547
|
if (flag || isRemoveAll) {
|
|
538
548
|
elementItem.removeEventListener(eventName, handler.callback, handler.option);
|
|
539
|
-
handlers.
|
|
549
|
+
const findIndex = handlers.findIndex((item) => item === handler);
|
|
550
|
+
if (findIndex !== -1) {
|
|
551
|
+
handlers.splice(findIndex, 1);
|
|
552
|
+
}
|
|
540
553
|
}
|
|
541
554
|
}
|
|
542
555
|
if (handlers.length === 0) {
|