Jquery的bind跟on綁定事件的區別:主要是事件冒泡(事件代理);
jquery文檔中bind和on函數綁定事件的用法:
.bind(events [,eventData], handler)
.on(events [,selector] [,data], handler)
從文檔中可以看出,.on方法比.bind方法多一個參數'selector'
.on的selector參數是篩選出調用.on方法的dom元素的指定子元素,如:
$('ul').on('click', 'li', function(){console.log('click');})就是篩選出ul下的li給其綁定click事件;
那么這個selector參數的好處是什么?
好處在於.on方法
原理是事件冒泡,進行事件委托,子元素把事件委托給父元素進行事件處理;
這樣的好處
1.萬一子元素非常多,給每個子元素都添加一個事件,會影響到性能;
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事件