bind方法与on方法都是事件绑定,可是二者却又有着一个大区别:事件委托jquery
jquery文档中bind和on函数绑定事件的用法:app
.bind(events [,eventData], handler)函数
.on(events [,selector] [,data], handler)性能
从文档中能够看出,.on方法比.bind方法多一个参数'selector'子类选择器;spa
事件委托就是子类的事情委托给父类的去作,而这就让咱们想起了冒泡事件,是的,这的确是委托事件的原型,而咱们的selector,则是判断是否是那个子元素触发的事件,若是不是,天然就忽略掉了;事件
好处资源
1.万一子元素很是多,给每一个子元素都添加一个事件,会影响到性能;文档
2.为动态添加的元素也能绑上指定事件;原型
1好比一个有着1000条新闻的新闻列表,当咱们绑定1000次的时候,会耗费不少资源,而一次事件委托就足够了;io
2.如:$('ul li').on('click', function(){console.log('click');})的绑定方式和$('ul li').bind('click', function(){console.log('click');})同样;我经过js给ul添加了一个li:$('ul').append('<li>js new li<li>');');这个新加的li是不会被绑上click事件的
可是我用$('ul').on('click', 'li', function(){console.log('click');}方式绑定,而后动态添加li:$('ul').append('<li>js new li<li>');这个新生成的li被绑上了click事件