JQ 常見誤區

一、attr 和 prop

attr 和 prop 用法幾乎一樣。官方推薦在操作屬性節點時,具有true 和 false 兩個屬性的屬性節點,如checked,selected 或 disabled 使用prop(),其他的使用attr()。
比如:有id=‘like’的複選框

--獲取代碼編寫                               返回值         獲取值類型
var s = $("#like").attr("checked")
(沒有設置checked,即沒有勾選 				  undefined	    undefined類型
var s = $("#like").attr("checked")
(設置checked,即勾選   					  "checked"	    string類型

var s = $("#like").prop("checked");
(沒有設置checked,即沒有勾選 				   false        boolean類型    
var s = $("#like").prop("checked")
(設置checked,即勾選 					   true         boolean類型    
二、html 和 text

相同點:都可以獲取/修改文本內容
不同點:html獲取內容時,標籤名也會獲取,text獲取時,不會獲取標籤名。
html修改內容時,將標籤轉換,text修改時,將標籤原樣輸出。

三、remove 和 detach

作用都是刪除,唯一不同是:
remove() : 除了這個元素本身得以保留之外,其他的比如綁定的事件,附加的數據等都會被移除。
detach() : 與remove()不同的是,所有綁定的事件、附加的數據等都會保留下來。

四、trigger 和 triggerHandler

trigger() : 在每一個匹配的元素上觸發某類事件。
triggerHandler() : 這個特別的方法將會觸發指定的事件類型上所有綁定的處理函數。但不會執行瀏覽器默認動作,也不會產生事件冒泡。
這個方法的行爲表現與trigger類似,但有以下三個主要區別:

  1. 他不會觸發瀏覽器默認事件。
  2. 只觸發jQuery對象集合中第一個元素的事件處理函數。
  3. 這個方法的返回的是事件處理函數的返回值,而不是據有可鏈性的jQuery對象。
    此外,如果最開始的jQuery對象集合爲空,則這個方法返回 undefined 。
五、JQ衝突問題

如果同時引入多個JS框架,則可能導致$衝突。後引入的會覆蓋之前的。
解決方法:

  1. 釋放$的使用權
    jQuery.noConflict()
    jQuery(function(){
        	alert('hello');
    });
    
    注意: 釋放操作必須在編寫其他jQuery代碼之前編寫
    釋放之後就不能再使用$,改爲jQuery使用
  2. 自定義一個訪問符號
    var lz = jQuery.noConflict();
    lz(function(){
    	alert('hello');
    });
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章