更新時間:2022-08-30 來源:黑馬程序員 瀏覽量:
jQuery提供了一些屬性操作的方法,主要包括prop()、attr()和data()等。通過這些方法,能夠?qū)崿F(xiàn)不同的需求。下面我們分別進行詳細講解。
1.prop()方法
prop0方法用來設置或獲取元素固有屬性值。元素固有屬性是指元素本身自帶的屬性,如<a>標簽的href屬性。具體語法示例如下:
$(selector).prop("屬性名") //獲取屬性值 $(selector).prop("屬性“,“屬性值") //設置屬性值
下面我們通過代碼演示prop()方法的使用。
<a href="http://localhost" title="主頁"></a> <script> console.log($("a").prop("href")); //輸出結(jié)果:http://localhost $("a").prop("title","首頁"); //設置title的值為“首頁” </script>
在上述代碼中,第3行代碼用于獲取<a>標簽的href屬性,輸出到控制臺中。第4行代碼用于設置<a>標簽的title屬性,將屬性值設為“首頁”。
在開發(fā)中,還會經(jīng)常使用prop(‘屬性’)獲取表單元素的checked值,示例代碼如下:
<input type="checkbox"checked> <script> //獲取表單元素的checked值 $("input").change(function() { console.log($(this).prop("checked")); //復選框選中時,輸出結(jié)果為true }); </seript>
上述代碼中,第1行代碼設置了input 的type值為checkbox,表示復選框。第4行代碼給input綁定了change事件,當表單元素狀態(tài)發(fā)生變化時觸發(fā)。如果復選框處于選中狀態(tài),則輸出結(jié)果為true,否則輸出false。
2. attr()方法
Attr()用來設置或獲取元素的自定義屬性,自定義屬性是指用戶給元素添加的非固有屬性。例如,給div添加index屬性,保存元素的索引值。具體語法如下。
$(selector).attr("屬性名") // 獲取屬性值 $(selector).attr(”屬性", “屬性值“) // 設置屬性值
下面我們通過代碼演示attr()方法的使用,如下所示。
<div index="1" data-index="2">我是div</div> <script> console.log($("div").attr("index")); // 輸出結(jié)果:1 console.log($("div").attr("data-index")); // 輸出結(jié)果:2 $("div").attr("index", 3); // 設置index的屬性值為3 $("div").attr("data-index", 4); // 設置data-index屬性值為4 </script>
在上述代碼中,div的index屬性是一個普通的自定義屬性,data-index是HTML5的自定義屬性(以“data-”開頭),使用atr()方法都可以進行設置或獲取。需要注意的是,自定義屬性無法使用prop()設置和獲取。
3. data()方法
data()方法用來在指定的元素上存取數(shù)據(jù)。數(shù)據(jù)保存在內(nèi)存中,并不會修改DOM元素結(jié)構(gòu);一旦頁面刷新,之前存放的數(shù)據(jù)都將被移除。具體語法如下:
$(selector).data("數(shù)據(jù)名") // 獲取數(shù)據(jù) $(selector).data("數(shù)據(jù)名","數(shù)據(jù)值") // 設置數(shù)據(jù)
下面我們演示通過data()方法實現(xiàn)數(shù)據(jù)的操作,示例代碼如下。
<div>我是div</div> <script> $ ("div").data("uname","andy"); // 設置數(shù)據(jù) console.log ($("div").data("uname")); // 獲取數(shù)據(jù),輸出結(jié)果:andy </script>
上述代碼運行后,umame會保存到內(nèi)存中,不會出現(xiàn)在HTML結(jié)構(gòu)中。
使用data()方法還可以讀取HTML5自定義屬性data-index,示例代碼如下:
<div index="1"data-index="2">我是div</div> <script> console.log($("div").data("index"));//輸出結(jié)果:2 </script>
在上述代碼中,第3行用來獲取data-index屬性,屬性名中不需要“data-”前綴,并且返回的結(jié)果是數(shù)字型。