jquery的bind跟on綁定事件的區(qū)別:主要是事件冒泡;
jquery文檔中bind和on函數(shù)綁定事件的用法:
.bind(events [,eventData], handler)
.on(events [,selector] [,data], handler)
.on
方法比.bind
方法多一個參數(shù)selector
游沿,.on
的selector
參數(shù)是篩選出調(diào)用.on
方法的dom
元素的指定子元素肮砾,由于JavaScript
的事件冒泡特性,如果我們在父元素上注冊了一個事件處理函數(shù)眯勾,當(dāng)子元素上發(fā)生這個事件的時候,父元素上的事件處理函數(shù)也會被觸發(fā)吃环。如果使用on的時候,不設(shè)置selector翅娶,那么on與bind就沒有區(qū)別了好唯。
請看如下代碼:
<ul>
<li id="li1">1</li>
<li id="li2">2</li>
</ul>
當(dāng)沒有selector
時使用.bind
和.on
:
$('ul').bind('click', function () { // 等同于$('ul').on('click', function () {
console.log($(this).text());
});
那么結(jié)果為:
當(dāng)有
selector
時骑篙,
$('ul').on('click','#li1', function () {
console.log($(this).text());
});
點(diǎn)擊1
顯示1
,點(diǎn)擊2
就沒有反應(yīng)了
還有一點(diǎn)贯溅,on
綁定的事件處理函數(shù)躲查,對于未來新增的元素一樣可以,但是bind
就不行姐霍,看下面的代碼:
$('ul').on('click','li', function () {
console.log($(this).text());
});
$('ul').append('<li>3<li>')典唇;
此時,點(diǎn)擊3
可以顯示出3
介衔;
$('ul li').bind('click', function () {
console.log($(this).text());
});
$('ul').append('<li>3<li>');
此時赃泡,點(diǎn)擊3
就顯示不出來了