jQuery delegate()用法

delegate()应用场景:js动态添加元素后需要给后添加的元素绑定事件,我称它为给未来元素添加事件。其实也可以用于为指定元素的一个或多个事件绑定事件处理函数,不过我个人觉得最适合解决未来元素的事件绑定,所以下面介绍的时候我就默认绑定事件的是未来元素啦。
注意:jq版本1.4.2的用法和1.4.3不一样,我先介绍1.4.2的。
jQueryObject.delegate( selector , events , data , hanlder )
参数说明:
jQueryObject:父元素,必须是与要绑定未来事件元素的祖先元素,可以不是直接父元素,但是必须是祖先元素(支持jq选择器)。
selector:需要绑定事件的未来元素(支持jq选择器)。
events:事件绑定,注意这里用了加s的单词,意思就是可以添加多个事件,用空格隔开就行,例如“click mouseenter mouseleave”。
data:可选参数,触发事件函数的时候可以传递给事件函数。
hanlder:事件处理函数,常用的几个地方

  • event.type:返回事件类型;
  • event.data:返回参数中传入的data值;
  • $(this):指向触发事件的对象;

贴段代码:



	
		
		
		
	
	
		

然后再介绍一下1.4.3支持的eventsMap的用法,有点像升级版
jQueryObject.delegate( selector , eventsMap, data)

var events = {
	'mouseenter': function(e){//注意,必须传e进来,不然会报错
		console.log('I am mouseenter function')
	},
	'mouseleave': function(e){
		console.log('I am mouseleave function')
	},
	'click': function(e){
		console.log($(this))
 		console.log(e.data)
	}
}
$('.myul').delegate('.myli div',events,'hahah');

当然你也可以把json对象放到delegate里面,不提出来。
大概就是这些吧 ,升级版的更高端,其实也就是帮我们简化了判断多个事件的过程,让代码看起来更规范一些,还是很好用的。

你可能感兴趣的:(技术分享)