JQuery 備忘

1、.on()  .bind()  .delegate()  .live()的區別

  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版本整合了以前的三種方式的新事件綁定機制。

2、.attr( ) 和 .prop( )的區別

  對於一些屬性,有的瀏覽器只要寫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()的使用:

3、.remove( )  .detach( )  .empty( )的區別

(1) .remove( )

  用remove()刪除節點後,此節點以及全部後代節點同時刪除。該方法返回值是一個指向已被刪除的節點。

  除了這個元素自己得以保留以外,其餘的好比綁定的事件,附加的數據等都會被移除。

(2) .detach( )

  與remove()的區別是仍然保留其綁定的數據。

(3) .empty( )

  清空元素內的全部後代元素。

相關文章
相關標籤/搜索