博客
关于我
jq05--强大的jq事件(事件处理)、on()、bind()、delegate()、hover()
阅读量:382 次
发布时间:2019-03-04

本文共 2179 字,大约阅读时间需要 7 分钟。

jQuery事件机制

jQuery事件机制是对JavaScript操作DOM事件的一种封装,主要包括事件绑定、事件解绑和事件触发。其最显著特点是能够为DOM对象绑定多个事件,这大大提高了开发效率。

jQuery事件的发展历程

jQuery事件的发展经历了多个阶段,从简单事件绑定到现代的on事件绑定。其发展历程主要包括以下几个阶段:

  • 简单事件绑定:最初的事件绑定方式,支持单个事件。
  • bind事件绑定:通过bind方法绑定事件,能够同时绑定多个事件。
  • delegate事件绑定:针对支持动态创建的元素,提升了事件绑定的性能。
  • on事件绑定:从jQuery 1.7版本开始推出的现代事件绑定方式,整合了前几代的优点。
  • bind方式

    bind方法用于为匹配到的元素绑定一个或多个事件,语法格式为:

    bind(type[, data], fn)

    • type:事件类型字符串,支持多个事件,用空格分隔。
    • data:可选参数,作为事件对象的data属性值传递给事件处理函数。
    • fn:事件处理函数,若为false则禁用默认行为。

    示例:

    $("p").bind("click mouseenter", function(e) {    // 事件响应方法(函数)});

    其优势在于支持同时绑定多个事件,但缺点是必须在文档加载后绑定,无法处理动态创建的元素。

    delegate方式

    delegate方法专门用于为支持动态创建的元素绑定事件,语法格式为:

    delegate(selector, [type], [data], fn)

    • selector:过滤触发事件的元素。
    • type:事件类型,支持多个事件。
    • data:传递给事件处理函数的额外数据。
    • fn:事件处理函数。

    示例:

    $(".父级对象").delegate("过滤对象", "click", function() {    // 为 .父级对象下面的所有过滤对象绑定事件});

    其优势在于支持动态创建的元素绑定事件,性能较高。

    on方式

    on方法是现代的事件绑定方式,自jQuery 1.7版本后取代了前两种方法,语法格式为:

    on(events[, selector][, data], handler)

    • events:事件类型字符串,支持多个事件。
    • selector:指定触发事件的元素,省略时事件直接在匹配元素上触发。
    • data:传递给事件处理函数的数据。
    • handler:事件处理函数。

    示例:

    $(selector).on("click", "span", function() {    // 给$(selector)绑定点击span事件});

    on方法的最大优势是减少事件绑定次数,提高了效率,特别适用于动态创建的元素。

    事件解绑

    事件解绑是确保代码可维护性和性能的重要环节,jQuery提供了多种方式进行事件解绑。

    unbind方式

    unbind方法用于解除bind方式绑定的事件,语法格式为:

    unbind([type][, data|fn])

    • type:指定要解除的事件类型,支持多个事件。
    • data/fn:可选参数,用于指定要解除的具体事件处理函数。

    示例:

    $("selector").unbind();$("selector").unbind("click");

    undelegate方式

    undelegate方法用于解除delegate方式绑定的事件,语法格式为:

    undelegate([type][, data|fn])

    • type:指定要解除的事件类型。
    • data/fn:可选参数,用于指定要解除的具体事件处理函数。

    示例:

    $("selector").undelegate();$("selector").undelegate("click");

    off方式

    off方法用于解除on方式绑定的事件,语法格式为:

    off([events][, selector][, data])

    • events:解除的事件类型,支持多个事件。
    • selector:指定要解除的事件处理函数所在的元素。
    • data:传递给事件处理函数的数据。

    示例:

    $("selector").off(); $("selector").off("click");

    事件触发

    事件触发是调用预定义的函数或浏览器行为的重要功能,jQuery提供了多种触发方式。

    简单事件触发

    通过trigger方法触发事件,直接在元素上触发对应的浏览器行为:

    $(selector).trigger("click");

    事件响应处理

    通过triggerHandler方法触发事件响应函数,避免触发浏览器行为:

    $(selector).triggerHandler("focus");

    事件切换

    hover方法用于处理鼠标在元素上方悬停和移出的事件,语法格式为:

    hover([over], [out])

    • over:鼠标悬停时的事件处理函数。
    • out:鼠标移出时的事件处理函数。

    示例:

    $("元素").hover(function() {    // 鼓励事件}, function() {    // 离开事件});

    hover方法通过检查鼠标的位置,避免了传统的mouseover和mouseout的错误,能够更准确地控制事件触发。

    转载地址:http://tqtr.baihongyu.com/

    你可能感兴趣的文章
    NOIP2014 提高组 Day2——寻找道路
    查看>>
    noip借教室 题解
    查看>>
    NOIP模拟测试19
    查看>>
    NOIp模拟赛二十九
    查看>>
    Vue3+element plus+sortablejs实现table列表拖拽
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>
    None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
    查看>>
    NoNodeAvailableException None of the configured nodes are available异常
    查看>>
    Vue.js 学习总结(16)—— 为什么 :deep、/deep/、>>> 样式能穿透到子组件
    查看>>
    NOPI读取Excel
    查看>>
    NoSQL&MongoDB
    查看>>
    NoSQL介绍
    查看>>
    NoSQL数据库概述
    查看>>
    Notadd —— 基于 nest.js 的微服务开发框架
    查看>>
    Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    Notepad++在线和离线安装JSON格式化插件
    查看>>
    notepad++最详情汇总
    查看>>
    notepad++正则表达式替换字符串详解
    查看>>