jQuery 1.7 中,对以前的
bind
/
unbind
、
live
/
die
、
delegate
/
undelegate
三个事件绑定方法做了统一:
1
2
|
$(elements).on( events [, selector] [, data] , handler );
$(elements).off( [ events ] [, selector] [, handler] );
|
当提供了selector
参数时,.on()
和以前的 .delegate()
方法十分类似;当selector
参数忽略或为空时,又和以前的 .bind()
很相似。
有一点需要注意,当 data 参数是字符串类型时,必须要提供一个 string 类型的 selector 或 null,来防止 data 被误认为是 selector。
以前旧的事件 API 在1.7 中依然保留,但是官方推荐使用新的 API。以下是新旧 API 的几个对比例子。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
$(
'a'
).bind(
'click'
, myHandler);
$(
'a'
).on(
'click'
, myHandler);
$(
'form'
).bind(
'submit'
, { val: 42 }, fn);
$(
'form'
).on(
'submit'
, { val: 42 }, fn);
$(window).unbind(
'scroll.myPlugin'
);
$(window).off(
'scroll.myPlugin'
);
$(
'.comment'
).delegate(
'a.add'
,
'click'
, addNew);
$(
'.comment'
).on(
'click'
,
'a.add'
, addNew);
$(
'.dialog'
).undelegate(
'a'
,
'click.myDlg'
);
$(
'.dialog'
).off(
'click.myDlg'
,
'a'
);
$(
'a'
).live(
'click'
, fn);
$(document).on(
'click'
,
'a'
, fn);
$(
'a'
).die(
'click'
);
$(document).off(
'click'
,
'a'
);
|