一、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類似,但有以下三個主要區別:
- 他不會觸發瀏覽器默認事件。
- 只觸發jQuery對象集合中第一個元素的事件處理函數。
- 這個方法的返回的是事件處理函數的返回值,而不是據有可鏈性的jQuery對象。
此外,如果最開始的jQuery對象集合爲空,則這個方法返回 undefined 。
五、JQ衝突問題
如果同時引入多個JS框架,則可能導致$衝突。後引入的會覆蓋之前的。
解決方法:
- 釋放$的使用權
注意: 釋放操作必須在編寫其他jQuery代碼之前編寫jQuery.noConflict() jQuery(function(){ alert('hello'); });
釋放之後就不能再使用$,改爲jQuery使用 - 自定義一個訪問符號
var lz = jQuery.noConflict(); lz(function(){ alert('hello'); });