广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >jquery事件代理指的是什么
  • 765
分享到

jquery事件代理指的是什么

2024-04-02 19:04:59 765人浏览 泡泡鱼
摘要

这篇文章主要介绍“Jquery事件代理指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jquery事件代理指的是什么”文章能帮助大家解决问题。

这篇文章主要介绍“Jquery事件代理指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jquery事件代理指的是什么”文章能帮助大家解决问题。

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

教程操作环境: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');        
    });
});
<div class="container">
    <div class="box">click me</div>
</div>

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

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

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

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

.live(event type,event handle)

修改上面的例子:

$(document).ready(function(){
    $('.box').live('click',function(){
        $(this).clone().appendTo('.container');        
    });
});
<div class="container">
    <div class="box">click me</div>
</div>

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

.delegate(selector,event type,event handler)

修改以上例子:

<script type="text/javascript">
  
  $(document).ready(function(){
        $('.container').delegate('.box','click',function(){
            $(this).clone().appendTo('.container:first');        
        });
    });    
  </script>
  <body>
    <div class="container">
        <div class="box">click me</div>
    </div>
    <div class="container">
        <div class="box">click me</div>
    </div>
    <div class="container">
        <div class="box">click me</div>
    </div>
  </body>

于用.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事件代理指的是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网node.js频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: jquery事件代理指的是什么

本文链接: https://www.lsjlt.com/news/98144.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • jquery事件代理指的是什么
    这篇文章主要介绍“jquery事件代理指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jquery事件代理指的是什么”文章能帮助大家解决问题。 ...
    99+
    2022-10-19
  • jquery绑定事件指的是什么
    本篇文章和大家了解一下jquery绑定事件指的是什么。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 在jquery中,绑定事件的意思是将普通的时间event绑...
    99+
    2022-10-19
  • jquery事件是什么意思
    小编给大家分享一下jquery事件是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! jque...
    99+
    2022-10-19
  • VB.NET事件指的是什么
    这期内容当中小编将会给大家带来有关VB.NET事件指的是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。VB.NET经过长时间的发展,很多用户都很了解VB.NET事件了,这里我发表一下个人理解,和大家讨...
    99+
    2023-06-17
  • jquery中常用的事件是什么
    这篇文章主要介绍“jquery中常用的事件是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jquery中常用的事件是什么”文章能帮助大家解决问题。jquery中常用的事件有:1、window事件...
    99+
    2023-07-04
  • jquery中什么是事件冒泡
    本教程操作环境:windows7系统、jquery3.6.1版本、Dell G3电脑。什么是事件冒泡冒泡事件就是,如果在某一个对象上触发某一类事件,那么该事件会向父级传播,并触发父对象上定义的同类事件。事件传播的方向是从最底层到最顶层,类似...
    99+
    2022-11-22
    jquery javascript
  • jquery-form指的是什么
    这篇文章主要介绍“jquery-form指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jquery-form指的是什么”文章能帮助大家解决问题。 ...
    99+
    2022-10-19
  • jquery绑定事件的作用是什么
    本篇内容介绍了“jquery绑定事件的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!jquery绑定事件的作用:将普通的事件eve...
    99+
    2023-07-05
  • 怎么理解jQuery代码优化的基本事件
    这篇文章主要介绍“怎么理解jQuery代码优化的基本事件”,在日常操作中,相信很多人在怎么理解jQuery代码优化的基本事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么...
    99+
    2022-10-19
  • jquery点击input触发的事件是什么
    这篇“jquery点击input触发的事件是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jquery点击input触发...
    99+
    2023-07-04
  • jquery ready事件的四种方法是什么
    本教程操作环境:windows7系统、jquery3.6.1版本、Dell G3电脑。jquery ready事件当 DOM(document object model 文档对象模型)加载完毕且页面完全加载(包括图像)时发生 ready 事...
    99+
    2023-05-14
    ready事件 jquery javascript
  • jQuery里find指的是什么
    这篇“jQuery里find指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jQuery里find指的是什么”文章吧...
    99+
    2023-07-05
  • jquery中each指的是什么
    这篇“jquery中each指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jqu...
    99+
    2022-10-19
  • jquery中next指的是什么
    这篇文章主要讲解了“jquery中next指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery中next指的是什么”吧! ...
    99+
    2022-10-19
  • jquery中click指的是什么
    本篇内容主要讲解“jquery中click指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery中click指的是什么”吧! ...
    99+
    2022-10-19
  • jquery中document指的是什么
    本篇内容主要讲解“jquery中document指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery中document指的是什么”吧! ...
    99+
    2022-10-19
  • jquery中cdn指的是什么
    这篇“jquery中cdn指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jque...
    99+
    2022-10-19
  • jquery中add指的是什么
    这篇文章主要介绍“jquery中add指的是什么”,在日常操作中,相信很多人在jquery中add指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jquery中add...
    99+
    2022-10-19
  • jquery中nan指的是什么
    今天小编给大家分享一下jquery中nan指的是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2022-10-19
  • jquery中>指的是什么
    今天小编给大家分享一下jquery中>指的是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作