IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JS 事件绑定方法封装聚合 -> 正文阅读

[JavaScript知识库]JS 事件绑定方法封装聚合

?主函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件绑定封装</title>
</head>
<body>
    <input id="ipt1" type="text" />
    <hr>
    <input id="ipt2" type="text" />
    <hr>
    <select id="slt1">
        <option>1</option>
        <option selected>2</option>
        <option>3</option>
    </select>
</body>
<script src="../jquery.min.js"></script>
<script type="module">
    // 导入事件绑定的共通方法
    import bindEventCommon from './js/bindEventCommon.js'
    
    $(function() {
		
		// 项目的ID列表
        const inputItemIdList = [
            "ipt1",
            "ipt2",
            "slt1"
        ];
        bindEventCommon(inputItemIdList);
    })
</script>
</html>

???事件绑定的共通函数

// 事件绑定的共通函数,参数为id列表
async function bindEventCommon(itemIdList) {

    // 准备好要导入的模块地址
    const importModule = [];
    // 根据id来动态导入id所对应的模块
    for (const itemId of itemIdList.values()) {
        // 👨?💻ES2020新语法,动态模块导入
        importModule.push(import(`./${itemId}Event.js`))
    }
    
    // 存储导入模块的list
    let eventObjectList = [];
    try {
        eventObjectList = await Promise.all(importModule);
    } catch (error) {
        console.error('要导入的模块不存在,请检查ID名称或者模块名称!');
        return;
    }

    // 动态进行事件绑定
    for (const [index, itemId] of itemIdList.entries()) {
        /*
            itemIdList中元素的数量和eventObjectList中模块的数量相同
                因此可以通过itemIdList中元素的index获取到模块List中相对应的模块
            模块对象.default可以获取到模块中聚合的对象
        */ 
        $(`#${itemId}`).on(eventObjectList[index].default);
    }
}

export default bindEventCommon;

?各个项目所对应的事件封装函数
ipt1Event.js

// id为ipt1的元素的绑定事件聚合函数,该元素的所有事件都绑定到该对象中
const ipt1EventObject = {
    // 💪之所以命名为focus,是因为要和JQuery的on方法的事件名称保持一致
    focus: (event) => {
        console.log("ipt1的focus()方法执行了");
    },
    click: (event) => {
        console.log("ipt1的click()方法执行了");
    }
}

export default ipt1EventObject;

ipt2Event.js

const ipt2EventObject = {
    focus: (event) => {
        console.log("ipt2的focus()方法执行了");
    },
    click: (event) => {
        console.log("ipt2的click()方法执行了");
    }
}

export default ipt2EventObject;

slt1Event.js

const focusEvent = (event) => {
    console.log(event);
    console.log("slt1的focus()方法执行了");
}

function click(event) {
    console.log(event);
    console.log("slt1的click()方法执行了");
}

const slt1EventObject = {
    // 😒自定义函数的名称和事件名称不相同
    focus: focusEvent,
    // 😑想要把方法聚合到对象中
    blur: (event) => {
        console.log("slt1的blur()方法执行了");
    },
    // 😋自定义函数名称和事件名称相同
    click
}

export default slt1EventObject;

?目录结构
在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:09:15  更:2022-05-05 11:13:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:01:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码