使用函数bind(type [,data],fn)绑定事件:
1、其中type表示事件类型:blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseout,mouseover,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error。
2、data表示传递给事件对象的额外数据,范围绑定的处理函数
var $cr = $("#btn");
$cr.bind("click",myfun = function(){ //bind绑定事件,可以没有额外数据。可以将事件赋值给一个引用变量,在其他地方使用这个函数
this.innerHTML; //this表示绑定对象
$(this).html(); //将this通过$转化为jquery对象,以便调用jquery函数
});
$cr.bind("click.mynamespace",function(){ //mynamespace用于表示事件的命名空间,是一个用于区别相同类型事件的不同函数.
});
$cr.bind("mouseover",function(event){ //bind更换绑定事件,event事件对象,调用不用传递传参数,会自动拥有此参数。
event.preventDefault(); //阻止默认行为,如超链接自动跳转,提交按钮自动提交。
event.stopPropagation(); //停止事件冒泡。因为事件大部分默认是冒泡的
return false; //return false也代表了preventDefault和stopPropagation,可以代替他们
}).bind("mouseout",function(event){ //对于没有返回值的对象函数,函数后可以继续进行访问,jquery特色的链式操作。
event.type; //事件类型
event.target; //触发事件的元素,此处相当远鼠标离开的元素
event.relatedTarget; //相关元素,此处相当于鼠标进入的元素
event.pageX+event.pageY; //光标相对于页面的位置,如果有滚动条要加上滚动条的位置
event.which; //鼠标按键(1,2,3,表示左右中键)或键盘按键
event.metaKey; //ctrl按键
});
$cr.bind("mouseover mouseout",function(){ //可以一次绑定多个事件
alert("光标进出");
});
$cr.bind("myclick",function(event,message1,message2){ //为对象绑定自定义事件,不会自动触发,必须代码触发。
alert(message1.toString()+message2.toString());
});
$cr.one("click",function(){ //对只执行一次,就解除绑定的事件,使用one绑定
});
也可以同时绑定多个事件,例如绑定mouseenter和mouseleave两个事件,执行事件函数不同,这样整洁点,具体如下:
var eventsMap = {
"mouseenter": function(event){
alert(2);
},
"mouseleave": function(event){
alert(1);
}
};
$(".btn1").bind(eventsMap);//同时添加两个事件
记得以前的公司封装了方法,形式是这样的:
$(".btn").bind('click',this.btnClick());
btnClick : function(){
alert("1111");
},