jquery是如何处理事件绑定的。

Query中提供了四种事件监听方式,分别是bind、live、delegate、on,对应的解除监听的函数分别是unbind、die、undelegate、off。在开始看他们之前,先来声明一个例子,各函数的用法将围绕这个例子进行,

(live)方法现在已经被移除。

bind:

bind是使用频率较高的一种,作用就是在选择到的元素上绑定特定事件类型的监听函数

bind的特点就是会把监听器绑定到目标元素上,有一个绑一个,在页面上的元素不会动态添加的时候使用它没什么问题。但如果列表中动态增加一个“新元素”,点击它是没有反应的,必须再bind一次才行。要想不这么麻烦,我们可以使用on。

jQuery还有一种事件绑定的简写方式如a.click(function(){});、a.change(function(){});等,它们的作用与bind一样,仅仅是简写而已。

delegate:(事件委托)

delegate(selector,[type],[data],fn)

指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。

使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。

$("div").delegate("button","click",function(){
  $("p").slideToggle();
});

on:

on(events,[selector],[data],fn)

events:一个或多个用空格分隔的事件类型和可选的命名空间,如"click"或"keydown.myPlugin" 。

selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代。如果选择的< null或省略,当它到达选定的元素,事件总是触发。

data:当一个事件被触发时要传递event.data给事件处理函数。

fn:该事件被触发时执行的函数。 false 值也可以做一个函数的简写,返回false。

用on可以代替bind, delegate等。相当于这个on是全能的。

原文地址:https://www.cnblogs.com/joesbell/p/5950311.html