1、bind
使用语法:
1 jQueryObject.bind( events [, data ], handler ) 2 jQueryObject.bind( events [, data ] [, isDefaultBubble ] ) 3 jQueryObject.bind( eventsMap )
ps:执行bind()
时,会为当时文档中存在的每个匹配的元素绑定事件,如果之后你向文档中添加了新的与bind()绑定的元素相同的元素,绑定事件不会对其生效。如果你希望绑定事件对未来新添加的元素也生效,请使用on()、delegate()、live()等事件函数(尽量优先使用靠前的事件函数)。
2、on
使用语法:
1 jQueryObject.on( events [, selector ] [, data ], handler ) 2 jQueryObject.on( eventsMap [, selector ] [, data ] )
从jQuery 1.7开始,on()
函数提供了绑定事件处理程序所需的所有功能,用于统一取代以前的bind()、 delegate()、 live()等事件函数。
关于参数selector
,你可以简单地理解为:如果该参数等于null
或被省略,则为当前匹配元素绑定事件;否则就是为当前匹配元素的后代元素中符合selector
选择器的元素绑定事件。参数handler
中的this
指向当前匹配元素的后代元素中触发该事件的DOM元素。如果参数selector
等于null
或被省略,则this
指向当前匹配元素(也就是该元素)。
ps:如果传递了selector
参数,那么on()
函数并不是为当前jQuery对象匹配的元素绑定事件处理函数,而是为它们的后代元素中符合选择器selector
参数的元素绑定事件处理函数。on()
函数并不是直接为这些后代元素挨个绑定事件,而是委托给当前jQuery对象的匹配元素来处理。由于DOM 2级的事件流机制,当后代元素selector
触发事件时,该事件会在事件冒泡中传递给其所有的祖辈元素,当事件流传递到当前匹配元素时,jQuery会判断是哪个后代元素触发了事件,如果该元素符合选择器selector
,jQuery就会捕获该事件,从而执行绑定的事件处理函数。
3、delegate
使用语法:
jQueryObject.delegate( selector , events [, data ], handler ) jQueryObject.delegate( selector, eventsMap )
ps:参数的意义和on方式一样,两者区别是seleter和events顺序不同,delegate的selector是必需的,on的selector是可选的。