在 jQuery 中使用 BIND 或 ON 函数的最佳实践 [重复]

     2023-05-09     29

关键词:

【中文标题】在 jQuery 中使用 BIND 或 ON 函数的最佳实践 [重复]【英文标题】:Best practice using BIND or ON functions in jQuery [duplicate] 【发布时间】:2013-04-12 02:24:15 【问题描述】:

最近 jQuery 团队开始推荐使用 on 而不是 bind 将事件绑定到 DOM。

我想知道它们之间是否有区别,使用on 函数有什么好处以及将我所有的bind 更改为on 是否是一个很好的调用我的代码中的函数?

【问题讨论】:

我猜您的标题中的意思是 "BIND and ON" 而不是 "BIND and GO",对吧?两者之间的唯一区别是最终会消失。 .on 是自 1.7 以来附加事件侦听器的标准方法,该方法已发布大约 an year and half ago。对于像 jQuery 这样具有如此快速发布周期的项目,我不会称之为“最近”。 【参考方案1】:

jQuery 项目正朝着将越来越多的功能放在更少的方法中,而不是为每个单独的事物使用单独的方法。

bindlivedelegate 方法都已被单个方法 on 取代,您可以使用不同类型的参数来确定该方法的作用。

比较:

$(sel).bind(event, f);            =    $(sel).on(event, f);
$(sel).live(event, f);            =    $(document.body).on(event, sel, f);
$(sel).delegate(sel2, event, f)   =    $(sel).on(event, sel2, f);

如果你使用live,你应该替换它,因为那个方法的使用有点尴尬。此外,live 方法在 body 元素上创建了一个委托,您应该尝试将委托绑定到更近的范围。

如果您正在使用binddelegate,请立即将它们替换为on。您可以在新代码中执行此操作,也可以在您编辑的代码中执行此操作,但这些方法不会在不久的将来消失。

【讨论】:

【参考方案2】:

基本用例基本没有区别

 $( '#elementID' ).bind( 'click', function()... );
 $( '#elementID' ).on( 'click', function()... );

这两个功能相同..

.on() 也进行事件委托,因此是首选。

添加.on()的想法是创建一个统一的事件API,而不是有多个函数来绑定事件;

.on() 替换 .bind()、.live() 和 .delegate()。

从 jquery 1.7 开始,...bind 只是 .on() 的别名

【讨论】:

【参考方案3】:

On 从现在和将来附加一个事件处理程序。绑定,但是仅在您设置事件时附加该事件。如果动态添加其他元素,则不会为这些元素触发 bind。

【讨论】:

on 方法仅在您将选择器指定为参数之一时创建委托,否则它与bind 相同。【参考方案4】:

bind 只是一个可能会被删除的简写。来自 jQuery 的源代码:

...

bind: function( types, data, fn ) 
    return this.on( types, null, data, fn );
,

...

您可以自己查看source code 的介绍,了解有关 jQuery 工作原理的很多信息。

【讨论】:

错了。 .on() 管理事件委托,bind 没有 K,更新更精确【参考方案5】:

区别在于bind绑定事件,on也可以绑定事件,但也可以管理事件委托。

http://api.jquery.com/on/#direct-and-delegated-events

如果您想更详细地了解这一点,请查看这篇博文:http://www.elijahmanor.com/2012/02/differences-between-jquery-bind-vs-live.html

【讨论】:

浅谈jquery中的bind()live()delegate()on()绑定事件方式

一、on(),live(),bind()  on()为指定的元素,添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。使用on()方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。  live()向当前或... 查看详情

jquery中.bind().live().delegate().on()的比较

bind(type,[data],fn)为每个匹配元素的特定事件绑定事件处理函数 live(type,[data],fn)给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的 delegate(selector,[type],[data],fn)指定的元素(属于被选元素的子元素)... 查看详情

jquery绑定事件on()方法

参考技术Aevents:一个或多个用空格分隔的事件类型和可选的命名空间,如"click"或"keydown.myPlugin"。selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代。如果选择器为null或省略,当它到达选定的元素... 查看详情

jquery中绑定事件bind()on()live()one()的异同

 jQuery中绑定事件的四种方法,他们可以同时绑定一个或多个事件   bind()-------------------------版本号小于3.0(在Jquery3.0中已经移除,相应unbind()也移除)       live()-------------------------- 查看详情

jquery的bind跟on绑定事件的区别

Jquery的bind跟on绑定事件的区别:主要是事件冒泡(事件代理);jquery文档中bind和on函数绑定事件的用法:.bind(events[,eventData],handler).on(events[,selector] [,data],handler) 从文档中可以看出,.on方法比.bind方法多一个参数‘selector‘.on... 查看详情

jquery的bind跟on绑定事件的区别(代码片段)

jquery的bind跟on绑定事件的区别jquery的bind跟on绑定事件的区别:主要是事件冒泡;jquery文档中bind和on函数绑定事件的用法:.bind(events[,eventData],handler).on(events[,selector][,data],handler)从文档中可以看出,.on方法比.bind方法多一个参数‘sel... 查看详情

jquery中四个绑定事件的区别on,bind,live,delegate

1.jQ操作DOM元素的绑定事件的四种方式    jQ中提供了四种事件监听方式,bind、live、delegate、on,对应的解除监听的函数分别是unbind,die,undelegate,off2.bind   $(selector).bind(event,data,function)   event:事件... 查看详情

jquery中.bind().live().delegate().on()的区别

bind(type,[data],fn)为每个匹配元素的特定事件绑定事件处理函数$("a").bind("click",function(){alert("ok");});live(type,[data],fn)给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的$("a").live("click",function(){alert("ok");});delega... 查看详情

jquery动态绑定事件处理函数bind/on/delegate

1、bind方法绑定的事件处理函数不会应用到后来添加到DOM中的新元素。比如你在用bind给页面元素绑定事件之后,又新添加了一些与之前绑定过事件的元素一样的DOM元素,但是这些事件并不能在新的DOM元素上有体现。如:$(document).... 查看详情

jquery中.bind().live().delegate().on()的区别

jQuery中  .bind()   .live().  delegate().  on() 的区别 这几种方法都是绑定事件用到的,但是他们之间有些差别bind(type,[data],fn)为每个匹配元素的特定事件绑定事件处理函数例如:<ul><ahref="#... 查看详情

jquery中的bind(),live(),delegate(),on()绑定事件方式

bind()简要描述  bind()向匹配元素添加一个或多个事件处理器。使用方式  $(selector).bind(event,data,function)  event:必需项;添加到元素的一个或多个事件,例如click,dblclick等;          单事件处理:例如$(selector).b... 查看详情

jquery中bind,live,delegate,on的区别

jquery中bind,live,delegate,on的区别 这几种方法都是绑定事件用到的,但是他们之间有些差别bind(type,[data],fn)为每个匹配元素的特定事件绑定事件处理函数例如:<ul><ahref="#"><li>1111111</li></a><ahref="#"><li>... 查看详情

jquery事件绑定的四种方法

jQuery中提供了四种绑定事件的方法,分别是bind、live、delegate、on,对应的解除监听的函数分别是unbind、die、undelegate、off:一、on()方法(首选方法)on()方法在被选元素及子元素上添加一个或多个事件处理程序。自jQuery版本1.7起,on()... 查看详情

jquery事件机制(代码片段)

1事件操作1.1页面载入事件$(document).ready(function()//在这里写你的代码...);或者$(function($)//你可以在这里继续使用$作为别名...);1.2事件绑定on(eve,[sel],[data],fn)1.7+在选择元素上绑定一个或多个事件的事件处理函数bind(type,[data],fn)3.0-请使... 查看详情

转jquery中bind(),live(),delegate(),on()区别

当我们试图绑定一些事件到DOM元素上的时候,我相信上面这4个方法是最常用的。而它们之间到底有什么不同呢?在什么场合下用什么方法是最有效的呢?准备知识:当我们在开始的时候,有些知识是必须具备的:DOM树下图仅仅是... 查看详情

jquery绑定事物处理器

绑定与移除1、.bind() 绑定事件可以有2个或者3个参数:第一个参数为事件类型第二个参数为处理函数第三个为布尔类型on()事件代替2、.delegate() 事件委托,三个参数,第一个为选择器第二个为事件类型第三个为处理函数on()事件... 查看详情

javascript--------------------jquery中.bind().live().delegate().on()的区别和三种方式写光棒事件动画

 bind(type,[data],fn)为每个匹配元素的特定事件绑定事件处理函数。$("a").bind("click",function(){alert("ok");});live(type,[data],fn)给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的$("a").live("click",function(){alert("ok");... 查看详情

jquery中的bind(),live(),delegate(),on()绑定事件方式前言

前言  因为项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到dom元素的绑定事件方式,简单的归纳一下bind,live,delegate,on的区别,以便以后查阅,也希望该文章日后能帮助到园友,文中如有不当之处,还望各位指正... 查看详情