JQuery_绑定事件
绑定:
绑定事件:
一.如何给元素同时绑定两个事件?
方法一:
链式编程
$('button').click(function(){
alert('我是click事件!')
}).mouseenter(function(){
alert('我是mouseenter事件!')
})
方法二:
用bind绑定事件:事件之间用空格隔开
//bind绑定两个事件
$('button').bind('click mouseenter',function(){
alert('我是click事件!')
})
那如果想要不同的事件触发不同的函数呢?
$('button').bind({
'click':function(){
alert('点击触发事件!')
},
'mouseleave':function(){
alert('mouseleave事件!')
}
})
如果我们想要给事件传参数怎么办?
bind有三个参数,第二个参数是传进函数的参数
//bind有三个参数,第二个参数是传进函数的参数
$('button').bind('click','我是传进去的数据',function(e){
alert(e.data);
});
效果:
当然呢,这个参数合法的对象都可以,也可以传对象
$('button').bind('click', {name:'ww'}, function (e) {
alert(e.data.name);
})
效果:
取对象值的话调用对象的属性值
二.给多个元素绑定事件
//给多个元素绑定事件,绑定事件会消耗一些事件,为了优化
$('li').bind('click',function(){
alert($(this).html())
});
如何优化?
事件委托
委托给需要绑定事件的父元素
jQuery的delegate函数:
//delegate绑定方式
$('ul').delegate('li','click',function(){
alert($(this).html())
});
delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
三.事件只触发一次
在通常的情况下,jQuery的事件可以无数次的调用,那如何只触发一次呢?
one事件,只触发一次
$('button').one('click', {name:'ww'}, function (e) {
alert(e.data.name);
})
事件触发一次,再次点击没用
目前来看,我们绑定事件有三种方式: bind、one、delegate,有什么方式可以不用区分使用?
jQuery推出了on绑定事件
四.on绑定事件(1.7版本后支持)
on 强烈推荐使用:集上面所有的方法于一身
//on 绑定事件
$('ul').on('click','li',function(){
alert($(this).html())
});
同时,第二个参数是div的子元素,可以用jQuery的选择器来指定触发事件源
效果:
注意:给div绑定事件,触发的是 h1:eq(1), $(this)指向的是触发事件的事件源
还没有评论,来说两句吧...