jquery 1.7以後建議綁定事件用 .on( ),移除事件處理函數用 .off( )jquery
$(selector).bind(event,data,function); $(selector).live(event,data,function); //jquery1.9版本如下支持,jquery1.9及其以上版本刪除了此方法
$(selector).delegate(childSelector,event,data,function)//jquery1.4.2及其以上版本;1.7版本以後被 .on()替代
$(selector).on(event,childselector,data,function); //jquery1.7及其以上版本;jquery1.7版本出現以後用於替代上述三種綁定事件方式;
(1) .bind( ) 瀏覽器
.bind( )是直接綁定在元素上,並且當使用 bind 時,該元素必須是已經存在的。函數
若是不人爲的設置stopPropagation(Moder Browser), cancelBubble(IE),那麼它的全部父元素,祖宗元素都會受之影響;spa
(2) .live( )——1.7版本已刪除code
將委託的事件處理程序附加到一個頁面的 document 元素而不是像 .bind( ) 給全部的元素挨個綁定;對象
那些動態添加的元素依然能夠觸發那些早先綁定的事件,由於事件真正的綁定是在document上;blog
舊版本的jQuery中用戶,應優先使用 .delegate( )來取代 .live( )。事件
(3) .delegate( )rem
當使用 delegate 時,該元素能夠是將來才存在的。io
delegate是將事件註冊到已經存在的document,當發生click事件時,只須要匹配#objId是否跟觸發的對象一致,一致即執行函數。
(4) .on( )
.on( )是最新的1.9版本整合了以前的三種方式的新事件綁定機制。
對於一些屬性,有的瀏覽器只要寫disabled,checked就能夠了,而有的要寫成disabled = "disabled",checked="checked",好比用attr("checked")獲取checkbox的checked屬性時選中的時候能夠取到值"checked",但沒選中獲取值就是undefined。
jq提供新的方法「prop」來獲取這些屬性,就是來解決這個問題的,使用prop方法獲取checked屬性則統一返回true和false。
那麼,何時使用attr(),何時使用prop()?
1.添加屬性名稱該屬性就會生效應該使用prop();
2.是有true,false兩個屬性使用prop();
3.其餘則使用attr();
官方建議attr(),prop()的使用:
(1) .remove( )
用remove()刪除節點後,此節點以及全部後代節點同時刪除。該方法返回值是一個指向已被刪除的節點。
除了這個元素自己得以保留以外,其餘的好比綁定的事件,附加的數據等都會被移除。
(2) .detach( )
與remove()的區別是仍然保留其綁定的數據。
(3) .empty( )
清空元素內的全部後代元素。