0

0

jquery事件代理的意思是什么

WBOY

WBOY

发布时间:2022-06-17 17:11:23

|

1846人浏览过

|

来源于php中文网

原创

在jquery中,事件代理的意思是把事件绑定到父级元素,等待事件通过DOM冒泡到该元素时再执行的行为;事件代理就是利用事件冒泡的原理把事件加到父级上,通过判断事件来源,执行相应的子元素的操作,可以极大减少事件绑定次数,提高性能。

jquery事件代理的意思是什么

本教程操作环境:windows10系统、jquery3.6.0版本、Dell G3电脑。

jquery事件代理的意思是什么

在jQuery中,事件代理是指:把事件绑定到父级元素,然后等待事件通过DOM冒泡到该元素时再执行。

事件代理就是利用事件冒泡的原理(事件冒泡就是事件会向它的父级一级一级传递),把事件加到父级上,通过判断事件来源,执行相应的子元素的操作,事件代理首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。

在事件侦听过程中有两种触发事件的方式:事件捕获和事件冒泡。事件冒泡更快,效率更高。

事件捕获:事件在DOM中向后代元素下沉。

事件冒泡:事件从发生事件的源元素通过DOM向上冒泡。

jQuery使用事件冒泡的方式处理所有的事件。jQuery库提供了3个方法来绑定元素的事件处理函数,分别是bind()、live()、delegate()。

1、使用.bind()绑定事件处理函数:必须提供两个参数,第一个是事件类型,第二个是事件处理函数。

.bind(event type,event handle)

如:

$(document).ready(function(){
  $(".selector").bind("click",alertMe);
function alertMe(){
  alert("Hello world!");
}
});

.bind()方法仅适用于为DOM中已经存在的元素绑定事件处理函数。对于后来通过操作脚本时添加的DOM元素,则不起作用。

设想:在DOM中有一个.box元素,你希望某个链接在每次被单机时复制这个元素,并把它添加到DOM中。首先,我们可以为这个链接绑定一个适当的click事件处理函数。每单击这个链接一次,.clone()方法就会调用一次,复制box元素并把它追加到相应的容器中:

$(document).ready(function(){
    $('.box').bind('click',function(){
        $(this).clone().appendTo('.container');        
    });
});
click me

在浏览器运行,结果是单击这个链接,会追加元素。但是单击除了第一个链接的元素时,并不会执行click事件。

因此:绑定的click事件不能作用于这些刚刚被添加到DOM中的新元素。只有绑定事件那一刻DOM中存在的元素才会成功绑定click事件。click事件仅仅被绑定到第一个元素上,因此虽然能不断克隆第一个元素,而被克隆出来的这些元素却没有一个能够受click事件影响。如果想这个克隆出来的元素能够受click事件影响,可以使用.live()绑定。

魔法映像企业网站管理系统
魔法映像企业网站管理系统

技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作

下载

2、使用.live()绑定事件处理函数

.live()方法提供了一种相当灵活地捕获事件的方式。它的用法与.bind()极为相似。唯一不同点是.live()方法不仅作用于DOM中当前存在的元素,还作用于将来可能存在(动态生成)的元素。

.live(event type,event handle)

修改上面的例子:

$(document).ready(function(){
    $('.box').live('click',function(){
        $(this).clone().appendTo('.container');        
    });
});
click me

3、使用.delegate()绑定事件处理函数

.delegate(selector,event type,event handler)

修改以上例子:


  
    
click me
click me
click me

于用.live()绑定事件处理函数执行效果一样。但是用.delegate()绑定事件处理函数要比用.live()效率更高。jQuery库有关绑定的部分源码

bind: function( types, data, fn ) {
        return this.on( types, null, data, fn );
    },
    unbind: function( types, fn ) {
        return this.off( types, null, fn );
    },
    live: function( types, data, fn ) {
        alert(this.context); //添加一行
        jQuery( this.context ).on( types, this.selector, data, fn );
        return this;
    },
    die: function( types, fn ) {
        jQuery( this.context ).off( types, this.selector || "**", fn );
        return this;
    },
    delegate: function( selector, types, data, fn ) {
        alert(this); //添加一行
        return this.on( types, selector, data, fn );
    },
    undelegate: function( selector, types, fn ) {
        // ( namespace ) or ( selector, types [, fn] )
        return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
    },

分别在live和delegate方法内增加了一行,浏览器运行后,使用.live(),弹出是document,也就是说用.live()绑定事件,它的源头是document。使用.delegate(),弹出的是object,也就是说用.delegate()绑定事件,它的源头是具体绑定的元素。因此,使用.delegate()要比使用.live()效率更高。

从源码可以看出,用.bind()绑定事件处理函数,可以使用unbind()取消事件绑定。

        用.live()绑定事件处理函数,可以使用die()取消事件绑定。

        用.delegate()绑定事件处理函数,可以使用undelegate()取消事件绑定。

视频教程推荐:jQuery视频教程

相关文章

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

150

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

310

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

394

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

501

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

181

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

120

2024.02.23

jquery中什么是高亮显示
jquery中什么是高亮显示

jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

174

2024.02.23

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

35

2026.01.13

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

8

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
jQuery 教程
jQuery 教程

共42课时 | 4.5万人学习

HTML+CSS基础与实战
HTML+CSS基础与实战

共132课时 | 9.6万人学习

tp6+adminlte搭建通用后台
tp6+adminlte搭建通用后台

共39课时 | 5.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号