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

本文共 2192 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    npm build报错Cannot find module ‘webpack‘解决方法
    查看>>
    npm ERR! ERESOLVE could not resolve报错
    查看>>
    npm ERR! fatal: unable to connect to github.com:
    查看>>
    npm ERR! Unexpected end of JSON input while parsing near '...on":"0.10.3","direc to'
    查看>>
    npm ERR! Unexpected end of JSON input while parsing near ‘...“:“^1.2.0“,“vue-html-‘ npm ERR! A comp
    查看>>
    npm error Missing script: “server“npm errornpm error Did you mean this?npm error npm run serve
    查看>>
    npm error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装
    查看>>
    npm install CERT_HAS_EXPIRED解决方法
    查看>>
    npm install digital envelope routines::unsupported解决方法
    查看>>
    npm install 卡着不动的解决方法
    查看>>
    npm install 报错 EEXIST File exists 的解决方法
    查看>>
    npm install 报错 ERR_SOCKET_TIMEOUT 的解决方法
    查看>>
    npm install 报错 Failed to connect to github.com port 443 的解决方法
    查看>>
    npm install 报错 fatal: unable to connect to github.com 的解决方法
    查看>>
    npm install 报错 no such file or directory 的解决方法
    查看>>
    npm install 权限问题
    查看>>
    npm install报错,证书验证失败unable to get local issuer certificate
    查看>>
    npm install无法生成node_modules的解决方法
    查看>>
    npm install的--save和--save-dev使用说明
    查看>>
    npm node pm2相关问题
    查看>>