转载自:
http://www.365mini.com/page/jquery-on.htm
on()
函数用于为指定元素的一个或多个事件绑定事件处理函数。
此外,你还可以额外传递给事件处理函数一些所需的数据。
从jQuery 1.7开始,on()
函数提供了绑定事件处理程序所需的所有功能,用于统一取代以前的bind()、 delegate()、 live()等事件函数。
on()
支持直接在目标元素上绑定事件,也支持在目标元素的祖辈元素上委托绑定。在事件委托绑定模式下,即使是执行on()
函数之后新添加的元素,只要它符合条件,绑定的事件处理函数也对其有效。
此外,该函数可以为同一元素、同一事件类型绑定多个事件处理函数。触发事件时,jQuery会按照绑定的先后顺序依次执行绑定的事件处理函数。
要删除通过on()
绑定的事件,请使用off()函数。如果要附加一个事件,只执行一次,然后删除自己,请使用one()函数。
该函数属于jQuery
对象(实例)。
语法
jQuery 1.7 新增该函数。其主要有以下两种形式的用法:
用法一:
jQueryObject.on( events [, selector ][, data ], handler )
用法二:
jQueryObject.on( eventsMap [, selector ][, data ])
参数
events | String类型一个或多个用空格分隔的事件类型和可选的命名空间,例如"click"、"focus click"、"keydown.myPlugin"。 |
eventsMap |
Object类型一个Object对象,其每个属性对应事件类型和可选的命名空间(参数events ),属性值对应绑定的事件处理函数(参数handler )。 |
selector |
可选/String类型一个jQuery选择器,用于指定哪些后代元素可以触发绑定的事件。如果该参数为null 或被省略,则表示当前元素自身绑定事件(实际触发者也可能是后代元素,只要事件流能到达当前元素即可)。 |
data | 可选/任意类型触发事件时,需要通过event.data传递给事件处理函数的任意数据。 |
handler | Function类型指定的事件处理函数。 |
关于参数events
中可选的命名空间,请参考最下面的示例代码。
关于参数selector
,你可以简单地理解为:如果该参数等于null
或被省略,则为当前匹配元素绑定事件;否则就是为当前匹配元素的后代元素中符合selector
选择器的元素绑定事件。
参数handler
中的this
指向当前匹配元素的后代元素中触发该事件的DOM元素。如果参数selector
等于null
或被省略,则this
指向当前匹配元素(也就是该元素)。
on()
还会为handler
传入一个参数:表示当前事件的Event对象。
参数handler
的返回值与DOM原生事件的处理函数返回值作用一致。例如"submit"(表单提交)事件的事件处理函数返回false
,可以阻止表单的提交。
如果事件处理函数handler
仅仅只为返回false
值,可以直接将handler
设为false
。
返回值
on()
函数的返回值为jQuery类型,返回当前jQuery对象本身。
重要说明:
如果传递了selector
参数,那么on()
函数并不是为当前jQuery对象匹配的元素绑定事件处理函数,而是为它们的后代元素中符合选择器selector
参数的元素绑定事件处理函数。on()
函数并不是直接为这些后代元素挨个绑定事件,而是委托给当前jQuery对象的匹配元素来处理。由于DOM 2级的事件流机制,当后代元素selector
触发事件时,该事件会在事件冒泡中传递给其所有的祖辈元素,当事件流传递到当前匹配元素时,jQuery会判断是哪个后代元素触发了事件,如果该元素符合选择器selector
,jQuery就会捕获该事件,从而执行绑定的事件处理函数。
通俗易懂地说,如果我们希望给页面上所有的<P>标签绑定click事件处理函数,我们可以在每个P标签上直接分别绑定click事件处理函数。例如:
// 为所有P元素分别绑定click事件处理函数handler $("p").on("click", handler);
我们也可以在这些P标签的任意一个公共祖辈元素上绑定事件委托机制,利用DOM的事件冒泡机制来统一委托处理。当我们触发了某个元素的click事件,JS会依次通知该元素及其"父辈"元素、"爷爷辈"元素……直到最顶部的document对象为止,如果这些元素上绑定了click事件处理函数就会依次执行。
// 在body元素上绑定click事件处理函数handler,如果这个click事件是由其后代的P元素触发的,就执行handler $(document.body).on("click","p", handler);
在这里的示例中,事件委托机制就是,我们不为每个P元素直接绑定click事件处理函数,而是委托给其某个公共的祖辈元素(此处示例中为document.body
),"告诉"他:如果接收到了click事件触发通知,并且这个click事件是由我们这些P元素其中之一触发的,就执行祖辈元素上委托绑定的事件处理函数。
注意:"focus"、"blur"等部分事件不支持冒泡,使用事件委托机制将无效。不过,他们一般也有对应的支持冒泡的事件。例如与"focus"对应的"focusin",与"blur"对应的"focusout"。此外,我们也可以使用event.stopPropagation()方法,让当前触发的事件停止冒泡。
示例&说明
以点击事件("click")为例,以下是jQuery中事件函数的常规用法(某些函数也存在其它形式的用法,此处暂不列出):
// 这里的选择器selector用于指定可以触发事件的元素 // 这里的选择器ancestor应是selector的祖辈元素,selector触发的事件可以被其祖辈元素在事件流中捕获,从而以"代理"的形式触发事件。 // jQuery 1.0+ (1.4.3+支持参数data) $("selector").click([ data ,] handler ); // jQuery 1.0+ (1.4.3+支持参数data) $("selector").bind("click"[, data ], handler ); // jQuery 1.3+ (1.4+支持参数data) $("selector").live("click"[, data ], handler ); // jQuery 1.4.2+ $("ancestor").delegate("selector","click"[, data ], handler ); // jQuery 1.7+ $("ancestor").on("click","selector"[, data ], handler );
请参考下面这段初始HTML代码:
<divid="n1"> <pid="n2"><span>CodePlayer</span></p> <pid="n3"><span>专注于编程开发技术分享</span></p> <emid="n4">http://www.365mini.com</em> </div> <pid="n5">Google</p>
我们为<div>中的所有<p>元素绑定点击事件:
// 为div中的所有p元素绑定click事件处理程序 // 只有n2、n3可以触发该事件 $("div").on("click","p",function(){ // 这里的this指向触发点击事件的p元素(Element) alert( $(this).text()); });
运行代码(其他代码请自行复制到演示页面运行)
如果要绑定所有的<p>元素,你可以编写如下jQuery代码:
//为所有p元素绑定click事件处理程序(注意:这里省略了selector参数) //n2、n3、n5均可触发该事件 $("p").on("click",function(event){ // 这里的this指向触发点击事件的p元素(Element) alert( $(this).text()); });
此外,我们还可以同时绑定多个事件,并为事件处理函数传递一些附加的数据,我们可以通过jQuery为事件处理函数传入的参数event
(Event事件对象)来进行处理:
var data ={ id:5, name:"张三"}; // 为n5绑定mouseenter mouseleave两个事件,并为其传入附加数据data // 附加数据可以是任意类型 $("body").on("mouseenter mouseleave","#n5", data,function(event){ var $me = $(this); var options = event.data;// 这就是传入的附加数据 if( event.type =="mouseenter"){ $me.html("你好,"+ options.name +"!"); }elseif(event.type =="mouseleave"){ $me.html("再见!"); } });
此外,即使符合条件的元素是on()
函数执行后新添加,绑定事件对其依然有效。同样以初始HTML代码为例,我们可以编写如下jQuery代码:
// 为div中的所有p元素绑定click事件处理程序 // 只有n2、n3可以触发该事件 $("div").on("click","p",function(event){ alert( $(this).text()); }); // 后添加的n6也可以触发上述click事件,因为它也是div中的p元素 $("#n1").append('<p id="n6">上述绑定的click事件对此元素也生效!</p>');
参数events
还支持为事件类型附加额外的命名空间。当为同一元素绑定多个相同类型的事件处理函数时。使用命名空间,可以在触发事件、移除事件时限定触发或移除的范围。
function clickHandler(event){ alert("触发时的命名空间:["+ event.namespace +"]"); } var $p = $("p"); // A:为所有p元素绑定click事件,定义在foo和bar两个命名空间下 $p.on("click.foo.bar", clickHandler ); // B:为所有p元素绑定click事件,定义在test命名空间下 $p.on("click.test", clickHandler ); var $n2 = $("#n2"); // 触发所有click事件 $n2.trigger("click");// 触发A和B (event.namespace = "") // 触发定义在foo命名空间下的click事件 $n2.trigger("click.foo");// 触发A (event.namespace = "foo") // 触发定义在bar命名空间下的click事件 $n2.trigger("click.bar");// 触发A (event.namespace = "bar") // 触发同时定义在foo和bar两个命名空间下的click事件 $n2.trigger("click.foo.bar");// 触发A (event.namespace = "bar.foo") // 触发定义在test命名空间下的click事件 $n2.trigger("click.test");// 触发B (event.namespace = "test") // 移除所有p元素定义在foo命名空间下的click事件处理函数 $p.off("click.foo");// 移除A
on()
函数的参数eventsMap
是一个对象,可以"属性-值"的方式指定多个"事件类型-处理函数"。对应的示例代码如下:
var data ={ id:5, name:"张三"}; var events ={ "mouseenter":function(event){ $(this).html("你好,"+ event.data.name +"!"); }, "mouseleave":function(event){ $(this).html("再见!"); } }; //为n5绑定mouseenter mouseleave两个事件,并为其传入附加数据data $("body").on(events,"#n5", data);
相关推荐
内容概要:本文详细介绍了如何在Abaqus中批量建立非线性弹簧,特别是轨道弹簧的施加方法。主要内容涵盖非线性弹簧的基本概念、重要性及其在轨道交通仿真中的应用。文中具体讲解了创建材料属性、截面属性、装配体与部件、参考点与约束,以及施加非线性弹簧的具体步骤。此外,还提供了用于批量创建非线性弹簧的Python脚本代码片段,展示了如何通过编程方式高效地完成任务。最后,强调了这些方法在轨道交通车轨耦合模型中的重要性和应用前景。 适合人群:对Abaqus有基本了解,从事轨道交通仿真研究的技术人员和工程师。 使用场景及目标:①掌握Abaqus中非线性弹簧的创建流程;②提高轨道交通车轨耦合模型仿真的准确性;③利用Python脚本提升建模效率。 其他说明:本文提供的代码片段仅为示范,实际应用时需根据具体情况进行调整。
内容概要:本文详细介绍了PSO-LSSVM-Adaboost回归预测模型的构建方法及其性能评估标准。首先阐述了最小二乘支持向量机(LSSVM)的基本概念以及核函数的选择,接着重点讲解了利用粒子群优化(Particle Swarm Optimization, PSO)进行超参数调整的具体步骤,包括粒子初始化、适应度计算、速度和位置更新规则等。随后探讨了Adaboost集成学习算法的应用,特别是针对LSSVM作为基分类器时的权重更新策略。最后给出了模型的整体架构图,并采用多种评价指标如均方根误差(Root Mean Square Error, RMSE)、平均绝对误差(Mean Absolute Error, MAE)、决定系数(R-squared, R²)等来衡量模型的表现。 适合人群:对机器学习有一定了解并希望深入研究组合模型的科研工作者和技术爱好者。 使用场景及目标:适用于多特征输入单输出的预测任务,旨在提高预测精度的同时减少过拟合风险。通过本篇文章的学习,读者能够掌握如何将三种不同的机器学习技术有机结合,从而构建更加鲁棒的预测系统。 其他说明:文中提供了完整的Python代码片段用于辅助理解和实操练习,同时分享了一些实用的经验技巧,例如设置合理的迭代终止条件以节约计算资源。此外还提到了一些常见的注意事项,像处理特殊的数据情况(如y_true为0的问题)以及选择合适的评估指标。
2025年C++大作业芙芙与膨膨兽游戏.zip
内容概要:本文基于PFC3D(Particle Flow Code 3D)软件,详细探讨了岩石注浆过程中的破坏现象及其背后的机理。首先介绍了注浆破坏的复杂性,指出这是由材料特性、地质构造和计算机模拟技术共同决定的。接着重点讲解了注浆速度和流量的调整方法,强调适当的速度和流量对于确保注浆效率和避免过度破坏的重要性。最后讨论了在不考虑渗流场的情况下,如何根据岩石结构特征选择最佳的注浆孔位置,以提高注浆效果并保护周围岩石结构。 适合人群:从事地质工程领域的研究人员和技术人员,尤其是那些希望深入了解岩石注浆过程的人。 使用场景及目标:适用于需要利用PFC3D进行岩石注浆模拟的研究项目,旨在帮助用户掌握注浆速度、流量调节技巧以及合理的注浆孔位选择方法。 其他说明:文中提供了简单的PFC3D模拟代码框架,便于读者快速上手实践。同时提醒读者注意实际操作时应结合实验室理论模型和现场具体情况来进行参数优化。
毕业设计-家政服务小程序 V2.7.1-整站商业源码.zip
在拆分工作的时候,很多内容都会通过多分支延伸逻辑的表达和呈现。 今天给大家分享商务风所涉及工作汇报逻辑关系图PPT,希望能够帮助到大家。[666]
实训商业源码-万能表单weui 8.1.16-论文模板.zip
内容概要:本文详细介绍了如何利用滑动平均算法(MA)处理电力系统中的功率波动,确保其符合国家并网标准。首先解释了功率波动的概念及其对电力系统的影响,接着阐述了滑动平均算法的基本原理和实现步骤,包括设置不同时间窗口(1分钟和10分钟)来平滑功率数据。随后讨论了如何计算滑动后的最大功率波动以及如何调整滑动窗口参数以达到最佳效果。最后,提出了合理的功率分配策略,以确保最终输出既稳定又高效地满足国家标准。 适合人群:从事电力系统研究和技术实施的专业人士,尤其是关注功率波动处理和并网标准的技术人员。 使用场景及目标:适用于需要解决电力系统中功率波动问题的实际工程环境,旨在帮助技术人员理解和应用滑动平均算法,从而提升电力系统的稳定性和效率。 其他说明:文中提供了详细的理论背景和技术细节,有助于深入理解滑动平均算法的应用,并指导具体的工程实践。
实训商业源码-门店微商城小程序V1.2.2 开源版-论文模板.zip
毕业设计-分享红包暴力营销 11.9.44-整站商业源码.zip
实训商业源码-多商家营销活动平台V2.1.0 小程序前端+后端-论文模板.zip
内容概要:本文探讨了广义回归神经网络(GRNN)在数据预测中的应用及其优化方法。GRNN作为一种基于径向基函数网络的前馈型神经网络,在预测任务中有广泛应用。但其性能高度依赖于平滑因子的选择。文中介绍了嵌套最新的DBO(蜣螂)优化算法,通过自动优化平滑因子,使GRNN获得全局最优预测网络权重。具体来说,DBO算法模拟蜣螂行为,通过多次迭代随机生成不同平滑因子并评估其预测效果,最终选择最优平滑因子。此外,还提供了Python代码示例,展示了如何实现这一优化过程。 适合人群:对机器学习尤其是神经网络有一定了解的数据科学家、研究人员以及相关从业者。 使用场景及目标:适用于需要提高数据预测精度的任务,如金融建模、天气预报等领域。目标是通过优化平滑因子提升GRNN模型的预测性能。 其他说明:该方法不仅提高了预测准确性,还为数据预测任务提供了一个智能化、高效化的解决方案。建议读者在实践中结合自身业务特点灵活应用。
Avif批量转换Jpg工具是一款专注于图片格式转换的软件,旨在帮助用户便捷地将Avif格式图片批量转换为Jpg格式。在当今图片处理需求多样化的时代,不同格式的图片应用场景各异,这款软件正是为解决Avif与Jpg格式转换难题而诞生。 该软件具备强大的批量转换功能,能够一次性处理多张Avif图片,大大提高了转换效率,节省用户时间。用户无需逐一转换图片,只需简单操作,即可实现批量格式转换,让繁琐的图片格式转换工作变得轻松简单。 它适用于有图片格式转换需求的各类人群,如设计师、摄影师、自媒体从业者等,这些人群在日常工作中常常需要处理不同格式的图片。使用时,用户只需将需要转换的Avif图片导入软件,设置好输出路径等参数,点击转换按钮即可完成操作。 软件的核心使命是为用户提供高效、便捷的图片格式转换服务,帮助用户快速处理图片。在技术上,它采用先进算法,确保转换过程高效稳定。虽然目前暂未提及安全认证相关信息,但从其功能表现来看,专注于格式转换的单一功能,减少了潜在风险。在性能方面,批量转换功能的高效性体现了其良好的性能指标。
毕业论文-无后台版-整站商业源码.zip
内容概要:本文介绍了如何利用遗传算法(GA)、粒子群优化算法(PSO)以及差分进化算法(DE)对K均值聚类方法进行优化,旨在最小化类内距离并支持自定义k值。文中详细阐述了三种优化算法的工作原理及其在K均值聚类中的具体应用方式,同时提供了完整的MATLAB代码实现,包括数据加载、预处理、聚类及优化步骤。实验结果显示,经过优化后的K均值聚类能够显著提升聚类效果,降低对初始条件的敏感性。 适合人群:从事数据分析、机器学习领域的研究人员和技术人员,尤其是那些希望深入了解聚类算法优化机制的人。 使用场景及目标:适用于需要对大规模数据集进行高效分类的应用场景,如市场细分、图像识别、文本分类等领域。通过学习本文提供的优化方法,读者可以获得更好的聚类结果,为后续的数据分析提供坚实的基础。 其他说明:本文不仅理论讲解详尽,还附带了实用的MATLAB代码,方便读者动手实践,快速掌握相关技能。
实训商业源码-社群团购接龙V9.4.0公众号+小程序双端源码-论文模板.zip
内容概要:《师说》由唐代文学家韩愈所作,强调了师道的重要性。文章指出古代学者必定有老师,因为老师能够传授道理、教授学业、解答疑惑。文中认为人的认知并非与生俱来,每个人都会遇到疑惑,而解决疑惑的最佳途径就是向老师求教。无论年龄、地位,只要懂得道理,就可以成为他人之师。作者还批评了当时社会上一些人轻视师道的现象,认为这导致了智慧的退化。最后,韩愈以李蟠为例,赞扬了他能不受世俗限制,向自己求学的行为,并以此文赠予李蟠,倡导尊师重道的精神。; 适合人群:对古代文化、教育思想感兴趣的读者,以及希望深入了解中国传统文化中师生关系的人士。; 使用场景及目标:①适用于古代文化研究及教学场景;②有助于理解古代儒家对于教育、师生关系的看法;③可以作为现代教育理念的参考,思考如何传承和发扬尊师重道的传统美德。; 其他说明:此文不仅是对师道的论述,更是对当时社会风气的一种批判,体现了韩愈对教育和人才发展的深切关怀。
内容概要:本文介绍了使用COMSOL软件构建单轴压缩裂纹发展的二维模型,旨在通过弹性模量变化相图确定裂纹开裂位置。首先,文中详细描述了如何在COMSOL中创建二维模型并设定材料属性,如弹性模量和泊松比。接着,通过设定边界条件进行单轴压缩加载模拟,具体操作包括对底部边界的固定约束以及顶部边界的均匀压力载荷施加。最后,利用COMSOL的后处理功能提取弹性模量数据并绘制变化相图,从而识别出裂纹可能产生的位置。这种方法有助于深入理解材料在受力时的内部变化机制。 适合人群:从事材料科学、工程力学领域的研究人员和技术人员,尤其是那些希望借助数值模拟手段探究材料裂纹行为的人群。 使用场景及目标:适用于需要评估材料在单轴压缩条件下裂纹发展路径的研究项目。主要目标是通过建立精确的数学模型,预测裂纹形成的具体位置,进而指导材料的设计与改进。 其他说明:文中提供的MATLAB代码片段展示了具体的建模步骤,便于读者理解和复现实验过程。此外,还提到了未来可以扩展的方向,如引入材料非均质性等因素,使模型更加贴近现实情况。
毕业设计-接力棒2.6.4 开源版-整站商业源码.zip
毕业论文-智能AI雷达名片小程序V1.8.3原版+前端-整站商业源码.zip