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()显现的。

posted @ 2018-05-02 10:54  吴所事事  阅读(251)  评论(0编辑  收藏  举报