one、bind、unbind、live、delegate、on、trigger、triggerHandler区别

one:为每一个匹配元素的特定事件绑定一个一次性的事件处理函数,这个事件处理函数只会被执行一次,其他的规则与bind()相同,这个事件函数会接受到一个事件对象,可以通过他来阻止浏览器默认行为,如果想取消默认的行为,又想阻止事件冒泡,这个事件处理函数必须返回false。 若要删除one()绑定的事件,请使用unbind()或是off()函数。

bind:为每个匹配元素的特定事件绑定事件处理函数。jquery3.0已弃用此方法,用on()代替。 unbind:移除被选元素的事件处理程序。jquery3.0已弃用此方法,用off()代替。

live:给所有匹配元素添加一个事件处理函数,即使这个函数是后来才添加进来的也有效。而bind()则不会。.live() 方法能对一个还没有添加进DOM的元素有效,是由于使用了事件委托:绑定在祖先元素上的事件处理函数可以对在后代上触发的事件作出回应。传递给 .live() 的事件处理函数不会绑定在元素上,而是把他作为一个特殊的事件处理函数,绑定在 DOM 树的根节点上。jquery1.7.0已弃用此方法。

delegate:指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。jQuery 3.0中已弃用此方法,请用 on()代替。使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。jquery3.0已弃用此方法,用on()代替。

on:在选择元素上绑定一个或多个事件的事件处理函数。

trigger:在每一个匹配的元素上触发某类事件。这个函数也会导致浏览器同名的默认行为的执行。比如,如果用trigger()触发一个‘submit‘,则同样会导致浏览器提交表单。如果要阻止这种默认行为,应返回false。

triggerHandler:这个特别的方法将会触发指定的事件类型上所有绑定的处理函数。但不会执行浏览器默认动作,也不会产生事件冒泡。 这个方法的行为表现与trigger类似,但有以下三个主要区别: * 第一,他不会触发浏览器默认事件。 * 第二,只触发jQuery对象集合中第一个元素的事件处理函数。 * 第三,这个方法的返回的是事件处理函数的返回值,而不是据有可链性的jQuery对象。此外,如果最开始的jQuery对象集合为空,则这个方法返回 undefined 。

注:在jquery源码中,bing()、delegate()、one()均是由on()实现的。 unbind()、undelegate()均是由off()显现的。

原文地址:https://www.cnblogs.com/DebbieBlog/p/8979217.html

时间: 2024-10-03 22:09:47

one、bind、unbind、live、delegate、on、trigger、triggerHandler区别的相关文章

jQuery的.click,.bind,.unbind,.on,.off,.delegate,.undelegate

.click与.bind .click和.bind都是给每个元素绑定事件,对于只绑定一个click事件,.bind事件的简写就是.click那种方式. 这两种方式都会出现两个问题: 第一个问题,如果要绑定的事件特别多,比如要绑定100个元素,要绑定100次,对于大量元素来说,影响到了性能.但是如果是id选择器,因为id唯一,用bind()方法就很快捷了. 第二个问题,对于尚未存在的元素,无法绑定.动态添加一个span元素,点击这个span元素,会发现没有动作响应. 那么你就会问,为什么要出现.b

bind() live()和delegate 区别

Event bubbling (aka event propagation)冒泡 我们的页面可以理解为一棵DOM树,当我们在叶子结点上做什么事情的时候(如click一个a元素),如果我们不人为的设置stopPropagation(Moder Browser), cancelBubble(IE),那么它的所有父元素,祖宗元素都会受之影响,它们上面绑定的事件也会产生作用.看一个示例: $('a').bind('click', function() { alert("That tickles!&quo

详解jQuery中 .bind() vs .live() vs .delegate() vs .on() 的区别

转载自:http://zhuzhichao.com/2013/12/differences-between-jquery-bind-vs-live/ 我见过很多开发者很困惑关于jQuery中的.bind(), .live(), .delegate() 和 .on() 的使用以及它们的不同. 如果你没有耐心或者只想看到总结的话,请直接跳转到结尾. 在我们深入了解这些方法之前,先准备好HTML代码. [javascript] view plain copy <pre> <ul id=&quo

jQuery事件绑定方法bind、 live、delegate和on的区别

我们试图绑定一些事件到DOM元素上的时候,我相信上面这4个方法是最常用的.而它们之间到底有什么不同呢?在什么场合下用什么方法是最有效的呢? 1.准备知识 当我们在开始的时候,有些知识是必须具备的: 1).DOM树 下图仅仅是一个示例,这是一个在browser环境下的一棵模拟DOM树,在下面的代码中仅起到演示的作用: 2).Event bubbling (aka event propagation)冒泡 我们的页面可以理解为一棵DOM树,当我们在叶子结点上做什么事情的时候(如click一个a元素)

JQ中bind(),live(),delegate()事件方法的区别

[导读] bind(), live(), 和 delegate()这三个方法的区别并不是非常明显.弄清楚这些区别对我们写出简介的代码和预防我们的应用中出现bugs是非常有帮助的. jQuery团队在1 7版本中发布了一个用于绑定事件的新方法叫 bind(), .live(), 和 .delegate()这三个方法的区别并不是非常明显.弄清楚这些区别对我们写出简介的代码和预防我们的应用中出现bugs是非常有帮助的. jQuery团队在1.7版本中发布了一个用于绑定事件的新方法叫做on.这个方法包含

jQuery事件:bind、delegate、on的区别

最近在AngularJS的开发中,遇到一个神奇的事情:我们用到livebox来预览评论列表中的图片, 然而评论列表是由Angular Resource动态载入的.不可思议的是,点击这些动态载入的图片仍然会触发lightbox的图片预览. 难道lightbox使用先进的MutationObserver技术监听了DOM的变化?观察lightbox源码才发现,原来只是jQuery的.on()方法: $('body').on('click', 'a[rel^=lightbox], ...', funct

jquery中的trigger和triggerHandler区别

我们在jQuery基础教程之如何注册以及触发自定义事件这篇文章中,有用到今天要讲的trigger方法.今天我们来简单看看jquery中的trigger何triggerHandler方法的区别:trigger( event, [data] )在每一个匹配的元素上触发某类事件.这个函数也会导致浏览器同名的默认行为的执行.比如,如果用trigger()触发一个'submit',则同样会导致浏览器提交表单.如果要阻止这种默认行为,应返回false.你也可以触发由bind()注册的自定义事件 $("p&q

JQ中 trigger()和triggerHandler()区别

既然使用了trigger和triggerHandler,那么你应该了解了他们的差别了. trigger():在每一个匹配的元素上触发某类事件. triggerHandler():这个特别的方法将会触发指定的事件类型上所有绑定的处理函数. 看似两个非常相似,但是表同里不同! 下面就是他们之间的三大区别: 第一:trigger会导致浏览器同名的默认行为的执行,如:trigger('submit');不但会执行submit()函数的效果,也会执行表单提交的效果: 而triggerHandler就不会导

trigger triggerHandler

①使用Trigger 时会先触发我们绑定的focus 事件,然后文本框会获得焦点,之后触发了浏览器默认的focus事件,所以trigger 会有两次输出.<br />        ②TriggerHandler 相对于 Trigger 只会触发我们绑定的focus, 而不会触发浏览器的默认事件.所以只会有一次输出===================http://blog.sina.com.cn/s/blog_778a713c01012tvb.html