jquery的bind和on绑定事件的区别

bind和on的绑定事件的区别:

jquery文档中bind和on函数绑定事件的用法:

.bind(events [,eventData], handler)

.on(events [,selector]  [,data], handler)

用$('ul li').bind('click', function(){console.log('click');})绑定的事件,动态添加的li元素不会被绑定click事件,同样的已有的li被删除,但是click事件仍然在

用$('ul').on('click', 'li', function(){console.log('click');}方式绑定,动态添加的li的事件是可以被监听到的

on方法用的是事件代理(委托)机制,结合dom元素的捕获特性和JavaScript事件冒泡的高级特性,把事件绑定在父元素上 ;这种情况一般用在子元素较多或者子元素是变化的场景中;但是如果只是把事件绑定在父元素上,就需要在事件触发时判断当前触发的子元素,所以on方法的第二个可选参数selector就有用了

.on的selector参数指定是父元素代理的子元素

相关推荐