1. 程式人生 > 實用技巧 >jquery的bind跟on繫結事件的區別

jquery的bind跟on繫結事件的區別

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事件;

資源搜尋網站大全 https://www.renrenfan.com.cn 廣州VI設計公司https://www.houdianzi.com

那麼這個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>jsnew li<li>‘);‘);這個新加的li是不會被綁上click事件的

但是我用$(‘ul‘).on(‘click‘, ‘li‘, function(){console.log(‘click‘);}方式繫結,然後動態新增li:$(‘ul‘).append(‘<li>js new li<li>‘);這個新生成的li被綁上了click事件