jQuery 1.7 新的事件 API
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' ); |