delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。
delegate()应用场景:js动态添加元素后需要给后添加的元素绑定事件,我称它为给未来元素添加事件。
$(selector).delegate( childSelector , events, data, function);
"selector": 父元素,必须是与要绑定未来事件元素的祖先元素,可以不是直接父元素,但是必须是祖先元素。
"childSelector": 需要绑定事件的未来元素
"events": 事件绑定,注意这里用了加s的单词,意思就是可以添加多个事件,用空格隔开就行,例如“click mouseenter mouseleave”
"data": 可选。规定传递到函数的额外数据。
"function": 规定当事件发生时运行的函数。
例如,
//当点击鼠标时,隐藏或显示 p 元素:
$("div").delegate("button","click",function(){
$("p").slideToggle();
});
当然你也可以把json对象放到delegate里面,不提出来。
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');