jQuery中on()函数的用法笔记
1、用法一:on(events,selector,data,handler),
– 当我们要对一个或者多个元素绑定多个事件,同时对应一个事件处理函数时使用
1.1、参数的含义结合代码片一:
a).events:一个或者多个事件名称加命名空间组成中间隔着空格,比如("click")|(“click.one mouseenter.two”);
b).seletor:选择器,用于查找到选择绑定事件的DOM对象,可选,没有指定的时候默认将事件绑定在调用on函数的对象上;
c).data:可选,传入的数据存放在e.data中,再间接传入到事件处理函数之中;
d).handler:事件处理函数,可以用false代替;
代码片公用的html
<ul style="width: 400px;height: 400px;border: solid 1px #000">
<li>1</li>
<li id="two">2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
代码片一:
(function(){
var data = {
name: "数据",
}
function handler(e){
console.log(e.data);
console.log($(this).html());
}
$("ul").on("click.one","#two",data,handler);
/* 只有点击id为two的li才会触发
输出Object {name: "数据"}
2
*/
$("ul").on("click.one",data,handler);
/* 只要在ul的范围内点击就能够触发
输出 Object {name: "数据"}
<li>1</li>
<li id="two">2</li>
<li>3</li>
<li>4</li>
<li>5</li>
*/
})();
总结:
1、首先如果将事件处理函数分离出来比如handler,在函数内部如果需要使用到event对象,则必须在函数声明的时候
必须设置e形式参数;
2、e.data的输出可以知道data参数是存放在event对象中的
3、对比两次绑定事件的输出:
a).第一次绑定指定了selector,那么事件是绑定在由该s
elector查找到的DOM元素
b).第二次是绑定在调用该on函数的ul上的
c).handler函数的this指向取决于事件绑定在谁上面,所
以两次的$(this).html()输出不一样
2、用法二:on(eventsMap,selector,handler)
– 在需要对一个或者多个对象绑定多个事件,并对应多个事件处理函数时候使用;
2.1、参数的含义结合代码片二分析:
a).eventsMap:一个对象(事件--事件处理函数的映射),即是对象的属性key是事件名,属性值value是事件处理函数;
比如{
click: handler1,
mouseenter: handler2
}
b).seletor:选择器,用于查找到选择绑定事件的DOM对象,可选,没有指定的时候默认将事件绑定在调用on函数的对象上;
c).data:可选,传入的数据存放在e.data中,再间接传入到事件处理函数之中;
代码片二:
var eventsMap = {
click: handler1,
mouseenter: handler2
}
function handler1(e){
console.log("click");
}
function handler2(e){
console.log("mouseenter");
}
$("ul").on(eventsMap);