JS中的事件委托

生信入门第七课:使用FastQC软件进行测序原始fastq数据质控 从实验到数据:RNA定量、文库片段长度、fastqc质控和fastp去接头 阅读详情

一JS事件委托

JS事件委托是利用了事件冒泡的机制,将事件委托的父级元素去做,让父级元素触发时间。

二、好处:

1 提高效率

例如:鼠标移入的时候,给每个li增加背景颜色,移出的时候,去掉背景颜色

<script type="text/javascript">
window.onload = function(){
    var oUl = document.getElementById("ul1");
    var aLi = document.getElementsByTagName("li");
    for (var i = 0; i < aLi.length; i++) {
        aLi[i].onmouseover = function(){
            this.style.background = 'red';
        }
        aLi[i].onmouseout = function(){
            this.style.background = '';
        }
    }
}
</script>
<ul id="ul1">
    <li>1111</li>
    <li>2222</li>
    <li>3333</li>
    <li>4444</li>
</ul>  

效果如下:

如果上面例子中,li的个数太多,会导致效率问题,将上面例子改造成ul的事件,通过父级来处理事件

使用父级,需要用到事件源。
事件源:是event对象的,不管在哪个事件中,只要你操作的那个元素就是事件源

可以通过以下方式进行获取事件源:
ie:window.event.srcElement
标准下:event.target

下面代码使用事件委托

<script type="text/javascript">
window.onload = function(){
    var oUl = document.getElementById("ul1");
    var aLi = document.getElementsByTagName("li");
    for (var i = 0; i < aLi.length; i++) {
        oUl.onmouseover = function(ev){
            //解决事件源存在兼容性问题
            var ev = ev || window.event;
            var target = ev.target || ev.srcElement;
            target.style.background = 'red';
        }
        oUl.onmouseout = function(){
            var ev = ev || window.event;
            var target = ev.target || ev.srcElement;
            target.style.background = '';
        }
    }
}
</script>
<ul id="ul1">
    <li>1111</li>
    <li>2222</li>
    <li>3333</li>
    <li>4444</li>
</ul>  

改造之后效果一样

上面程序中,有一个bug,
鼠标移动到左边空白处,会整个ul变红

通过target的nodeName可以找到当前元素的标签,这样就可以解决问题:

window.onload = function(){
    var oUl = document.getElementById("ul1");
    var aLi = document.getElementsByTagName("li");
    for (var i = 0; i < aLi.length; i++) {
        oUl.onmouseover = function(ev){
            var ev = ev || window.event;
            var target = ev.target || ev.srcElement;
            if(target.nodeName.toLowerCase() == 'li'){
                target.style.background = 'red';
            }
        }
        oUl.onmouseout = function(){
            var ev = ev || window.event;
            var target = ev.target || ev.srcElement;
            if(target.nodeName.toLowerCase() == 'li'){
                target.style.background = '';
            }
        }
    }
}  

2 新增加的标签,也可以有之前的事件。

在第一个代码中,如果动态通过document来创建的标签,则无法有鼠标移入跟移出事件。而使用了事件委托给父级来实现,也解决了新增标签的问题。

这里就不举例了。可以在上面的第一个代码中,加入一个按钮。来动态增加li,就可以看出效果。

开尔文四线法与电桥(uΩ电阻检测) 本文介绍了开尔文四线法与电桥在电阻测量中的应用,特别是针对uΩ级别电阻的精确检测。讨论了基本电桥电路的工作原理,强调了开尔文四线法的优势,它能消除导线和接触电阻的影响。文中还提到了测试设备的介绍,包括不同级别的电阻测试,并详细阐述了uΩ级别电阻测试的步骤和注意事项。此外,对比了惠斯通电桥与开尔文电桥,强调了它们在电阻测量中的作用和计算方法。 阅读详情

相关推荐

5G初始注册流程详解(2)-Registration Request

1:了解注册的本质,5G终端为什么要注册? 2:SUCI,SUPI,5G-GUTI的区别? 3:为什么会有COMPLETE REGISTRATION REQUEST呢?

weixin_53220301的博客 3794

js怎么判断点击了哪个li标签的下标_js 索引下标之li集合绑定点击事件

js 索引下标之li集合绑定点击事件下面一段代码给大家介绍li集合绑定点击事件,具体代码如下所示://Method-1:var items = document.getElementsByTagName('li');for(var i=0;iitems[i].index = i;items[i].onclick = function(){this.innerHTML = this.index;}}...

weixin_29311017的博客 1055

Deepseek 10分钟化身理性荐股神器:触碰程序员不敢想的天花板

在这个消息疯狂、波动频繁的市场,“理性”两字显得弥足珍贵。通过Deepseek+AkShare+Aktools+Dify四位一体的方案,能帮我们降低信息搜集成本,并在短期投资领域搭建出一套“可解释、低门槛、易定制”的量化荐股流程。不要再盲目听小道消息或依赖情绪驱动,不妨给自己一个机会,让数据说话。而要注意的是,“理性荐股”并非万能,它只是工具,最终的收益还得依赖投资者自身对风险和机遇的权衡。祝大家都能在这股市里收获理性的底气,寻得更精准的入场时机。

qqxdh的博客 3752

js循环遍历ul中li的点击事件,给给选中li添加css

功能:对于一个ul中固定的li个数,当点击其中一个li时,改变选中li的颜色;同时改变对应的另一个ul中li的颜色页面初始化的界面:HTML: &lt;div &gt; &lt;label&gt;其他推荐:&lt;/label&gt; &lt;ul&gt; &lt;li c...

感恩、奋进、自信 3万+

信息奥赛课课通(C++)p154-1近似排序

试题描述 读入一对正整数,将这两个数之间(包括这两个数本身)的所有数按下述特别规则排序后输出,该特别规则是按两数倒过来的值进行比较决定其大小,如30倒过来为3,29倒过来为92,则29大于30. 输入要求 1行,包含两个用空格隔开的自然数,这两个自然数给出了待排序数的范围,其中1≤第一个数≤第二个数≤999999999,两个数之差不超过100. 输出要求 输出排序后的数据,每行输出...

mengdicfm的博客 7283

9、从统计到电路:未来物理不可克隆函数的基础

本文探讨了物理不可克隆函数(PUF)的关键技术,包括补偿环境影响、处理相关工艺变化、身份映射和测试方法。提出了一种基于新测试统计量Q的方法,有效提升了PUF的熵值和安全性。通过实验验证,新方法能够显著区分不同芯片,并增强PUF在不同环境下的适应性和可靠性,为未来PUF的设计与应用提供了重要基础。

pluto的博客 119

js为li添加点击事件,并且输出当前li点击的值

在使用js开发过程中,经常会遇到这样一个问题“如何对多个li添加onClick点击事件,并且输出点击对象的当前内容”。这是我们就想到了常用的for循环,如下图所示: 直接输出当前点击对象的内容 通过运行会发现依次点击li分别会弹出0,1,2; 由这类问题会引发一系列的问法,如果我们alert的是当时循环中的i值会出现什么情况: 直接输出循环中的i值 此时通过运行会发现无论点击那个li...

qq_39266265的博客 1万+

【Bug已解决】[Bug]: ValueError: No user query found in messages QWEN 3.5 27B VLLM 0.16.0 NIGHTLY 解决方案

用 vLLM 0.16.0 nightly 给发聊天请求时,服务端在处理消息时抛ValueError,请求失败。

博客 409

【前端/js】文本选择事件处理&动态添加Tooltip

通过该方法可以进一步获取用户所选的文本所在页面元素,以及对应的位置信息。之后我们可以使用这些数据进行进一步的处理,比如添加一个。该方法会返回一个描述用户选择文本的对象。

o0o 1731

Transformer实战(5)——Hugging Face环境配置与应用详解

本文详细介绍 Transformer 模型的实践应用全流程。首先讲解基于 Anaconda 的环境配置,包括 transformers 库安装及 hf-mirror 镜像加速方案。然后以 BERT 为例,演示分词器使用、文本编码及 fill-mask 等任务实现,对比 PyTorch/TensorFlow 框架差异。接着展示 Hugging Face 社区模型应用,包括 GPT-2 文本生成和零样本分类。最后扩展至多模态领域,使用 CLIP 模型实现零样本图像分类。

盼小辉丶的博客 1万+

【MERRA-2数据集】M2I1NXASM (5.12.4) 和 M2I1NXINT (5.12.4)概述

M2I1NXASM (5.12.4) 和 M2I1NXINT (5.12.4)概述

WW、forever的博客 683

html dom 修改,JavaScript HTML DOM - 改变 HTML

HTML DOM 允许 JavaScript 改变 HTML 元素的内容。改变 HTML 输出流JavaScript 能够创建动态 HTML 内容:Wed Jun 17 2020 09:36:29 GMT+0800 (中国标准时间)在 JavaScript 中,document.write() 可用于直接写入 HTML 输出流:实例document.write(Date());千万不要在文档加载后...

weixin_28936857的博客 192

海思SD3403/SS928V100开发(6)单路GMSL-MIPI-YUV相机视频输入调试

硬件连接:森云GMSL相机 -> GMSL 解串器 -> SD3403 MIPI0暂时先进行单路视频输入通路调试。

jzwjzw19900922的博客 1934

JavaScript系列—简述JS中的事件委托和事件代理

JS中的事件委托和事件代理 什么是事件委托? 事件委托还有一个名字叫事件代理,JS高程上讲:事件委托就是利用事件冒泡,只制定一个时间处理程序,就可以管理某一类型的所有事件。我用取快递来解释这个现象: 有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台代为签收。现实当中,我们大都采用委托的方案。前台收到快递后,她会判断收件人是谁,然后按照收件人的要...

jiaojsun的博客 1574

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JavaScript(JQ)事件委托以及JS闭包小记

一开始看的时候有些晕,可以监听DOM元素的方法太多,主要是写在<script></script>,下面列出来理清楚: JS原生: document.getElementById("menuultest").onmouseover = function(ev){ }; JQ:该段参考自https://codeplayer.vip/p/j7sq1 // jQue...

lan_学习分享 1919

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

JavaScript事件代理(事件委托)_js事件代理

举个通俗的例子比如一个宿舍的同学同时快递到了,一种方法就是他们一个个去领取,还有一种方法就是把这件事情委托给宿舍长,让一个人出去拿好所有快递,然后再根据收件人一 一分发给每个宿舍同学;在这里,取快递就是一个事件,每个同学指的是需要响应事件的 DOM 元素,而出去统一领取快递的宿舍长就是代理的元素,所以真正绑定事件的是这个元素,按照收件人分发快递的过程就是在事件执行中,需要判断当前响应的事件应该匹配到被代理元素中的哪一个或者哪几个。

2401_89224864的博客 774

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

JavaScript中的事件委托与事件冒泡

JavaScript中的事件委托与事件冒泡,以及常用的event的属性,其中主要详细讲了event.target

xiaban_的博客 2855

Javascript系列之(二)——js中的事件委托及其封装

Js中的事件委托及其封装 今天来学习事件委托及其封装 介绍 首先我们来看一下事件委托的介绍和定义,“委托”,顾名思义就是自己不想做,委托给别人做;“事件委托”,就是自己不想做某个事件,委托给其他元素做。 定义 将多个相同子元素的相同事件,绑定给页面上现存的共同的父元素,利用事件冒泡,配合事件对象身上的事件源找到真正点击的元素 优点 节省性能; 可以给页面上暂时不存在的元素绑定事件 缺点 在事件委托...

Claire_Moon的博客 560

body click js 委托_javascript事件委托和jquery事件委托

元旦过后,新年第一篇。初衷:很多的面试都会涉及到事件委托,前前后后也看过好多博文,写的都很不错,写的各有千秋,自己思前想后,为了以后自己的查看,也同时为现在找工作的前端小伙伴提供一个看似更全方位的解读事件委托的地方来认识了解他的原理,本篇文章汇总了两个版本的事件委托:javascript、jquery;事件委托的定义:利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。事件委托的优...

weixin_39945816的博客 209

JavaScript 事件委托

要使用事件委托,需要保证事件能够发生冒泡,适合使用事件委托的事件有 click、mousedown、mouseup、keydown、keyup、keypress 等。需要注意的是,虽然 mouseover 和 mouseout 事件也会发生事件冒泡,但处理起来非常麻烦,所以不推荐在 mouseover 和 mouseout 事件中使用事件委托。另外,对于不会发生事件冒泡的事件(例如 load、unload、abort、focus、blur 等),则无法使用事件委托。

前端梦工厂 1492

body click js 委托_javascript事件监听与事件委托

事件监听与事件委托在js中,常用到element.addEventListener()来进行事件的监听。但是当页面中存在大量需要绑定事件的元素时,这种方式可能会带来性能影响。此时,我们可以用事件委托的方式来进行事件的监听。每个事件都经历三个阶段捕获到达目标冒泡事件委托需要用到事件的冒泡,冒泡就是事件发生时,上层会一层一层的接收这个事件。如下页面结构:按钮当点击按钮,首先button接收到事件,然后...

weixin_28936649的博客 1370

【javaScript】js中的事件委托

前言 续上一章节的事件冒泡的另一大好处 >>> 事件委托 事件委托 概念: 事件委托:也称事件代理 就是利用冒泡的原理 把加事件加到父级上,触发执行效果 场景分析: 需求: 有一个列表,当鼠标移入每个li,背景颜色变红 当不用时间委托时我么可以这样写: window.onload = function(){ var Ul = document.getElementBy...

Umbrella_Um的博客 298

JavaScript(js)事件冒泡、事件捕获、事件委托详解

JavaScript和HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口发生的一些特定的交互瞬间。可以使用监听器(或事件处理程序)来预定事件,以便事件发生时执行相应的代码

欢迎大家交流前端开发技术、经验及各种知识沉淀 748

js实例分析JavaScript中的事件委托和事件绑定

 我们在学习JavaScript中,难免都会去网上查一些资料。也许偶尔就会遇到“事件委托”(也有的称我“事件代理”,这里不评论谁是谁非。以下全部称为“事件委托”),尤其是在查JavaScript的事件处理的时候。但是,大多数时说的是“事件绑定”,对于“事件委托”,或是不提,或是浅尝辄止。对于我这个比较好奇的人来说,实在很蛋疼。尤其是想更多的了解“事件委托”的时候。   这次干脆一劳...

dgce32897的博客 326

javaScript事件委托

事件委托(是 JavaScript 中一种高效处理事件的设计模式,核心思想是将子元素的事件委托给父元素(或更上层的祖先元素)处理,利用事件冒泡机制实现对动态生成元素的事件监听

0.0的博客 473

body click js 委托_javascript事件监听与事件委托实例详解

本文实例讲述了javascript事件监听与事件委托。分享给大家供大家参考,具体如下:事件监听与事件委托在js中,常用到element.addEventListener()来进行事件的监听。但是当页面中存在大量需要绑定事件的元素时,这种方式可能会带来性能影响。此时,我们可以用事件委托的方式来进行事件的监听。每个事件都经历三个阶段捕获到达目标冒泡事件委托需要用到事件的冒泡,冒泡就是事件发生时,上层会...

weixin_34985445的博客 303
上一篇: js函数以及js函数表达式
下一篇: js中的快速排序
hp柠檬茶
博客等级 码龄11年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值