成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁 ? 技術(shù)教程 ? jQuery中attr()與prop()函數(shù)用法實(shí)例詳解(附用法區(qū)別)
全站頭部文字 我要出現(xiàn)在這里
jQuery中attr()與prop()函數(shù)用法實(shí)例詳解(附用法區(qū)別) 633 2024-03-15   

本文實(shí)例講述了jQuery中attr()與prop()函數(shù)用法。分享給大家供大家參考,具體如下:

一、jQuery的attr()方法

jquery中用attr()方法來獲取和設(shè)置元素屬性,attr是attribute(屬性)的縮寫,在jQuery DOM操作中會(huì)經(jīng)常用到attr(),attr()有4個(gè)表達(dá)式。

1. attr(屬性名) //獲取屬性的值(取得第一個(gè)匹配元素的屬性值。通過這個(gè)方法可以方便地從第一個(gè)匹配元素中獲取一個(gè)屬性的值。如果元素沒有相應(yīng)屬性,則返回 undefined )

2. attr(屬性名, 屬性值) //設(shè)置屬性的值 (為所有匹配的元素設(shè)置一個(gè)屬性值。)

3. attr(屬性名,函數(shù)值) //設(shè)置屬性的函數(shù)值 (為所有匹配的元素設(shè)置一個(gè)計(jì)算的屬性值。不提供值,而是提供一個(gè)函數(shù),由這個(gè)函數(shù)計(jì)算的值作為屬性值。)

4.attr(properties) //給指定元素設(shè)置多個(gè)屬性值,即:{屬性名一: “屬性值一” , 屬性名二: “屬性值二” , … … }。(這是一種在所有匹配元素中批量設(shè)置很多屬性的最佳方式。 注意,如果你要設(shè)置對(duì)象的class屬性,你必須使用'className' 作為屬性名。或者你可以直接使用'class'或者'id'。)

示例代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery中attr()方法</title>
<script src="http://www.gimoo.net/t/1904/js/jquery-1.4.2.min.js" language="javascript" type="text/javascript" ></script>
<style>
p{color:red}
li{color:blue;}
.lili{font-weight:bold;color:red;}
#lili{font-weight:bold;color:red;}
</style>
</head>
<body>
<p title="你最喜歡的水果是。">你最喜歡的水果是?</p>
<ul>
<li title="蘋果汁">蘋果</li>
<li title="橘子汁" alt="123">橘子</li>
<li title="菠蘿汁">菠蘿</li>
</ul>
<script>
...
</script>
</body>
<html>

1.attr(name)//獲取屬性的值

1.1使用attr(name)獲取title值:

<script>
alert($("ul li:eq(1)").attr("title"));
</script>

結(jié)果:

查看圖片

1.2使用attr(name)獲取alt值:

<script>
alert($("ul li:eq(1)").attr("alt"));
</script>

結(jié)果:

查看圖片

2. attr(name,value) //設(shè)置屬性的值

2.1使用attr(name,value)修改title值為:不吃橘子

<script>
$("ul li:eq(1)").attr("title","不吃橘子");
alert($("ul li:eq(1)").attr("title"));
</script>

結(jié)果:

查看圖片

3. attr(name,fn) //設(shè)置屬性的函數(shù)值

3.1把a(bǔ)lt屬性的值設(shè)置為title屬性的值。

<script>
$("ul li:eq(1)").attr("title",function(){ return this.alt});
alert($("ul li:eq(1)").attr("title"));
</script>

結(jié)果:

查看圖片

4.attr(properties) //將一個(gè)“名/值”形式的對(duì)象設(shè)置為所有匹配元素的屬性

4.1獲取<ul>里第2個(gè)<li>設(shè)置title和alt屬性。

<script>
$("ul li:eq(1)").attr({title:"不喝橘子汁",alt:"不是123"});
alert($("ul li:eq(1)").attr("title"));
alert($("ul li:eq(1)").attr("alt"));
</script>

結(jié)果:

查看圖片查看圖片

4.2獲取<ul>里第2個(gè)<li>設(shè)置class。

<script>
$("ul li:eq(1)").attr({className:"lili"});
</script>

結(jié)果:

查看圖片

4.3獲取<ul>里第2個(gè)<li>設(shè)置id。

<script>
$("ul li:eq(1)").attr({id:"lili"});
</script>

結(jié)果:

查看圖片

4.4獲取<ul>里第2個(gè)<li>設(shè)置style。

<script>
$("ul li:eq(1)").attr({style:"color:red"});
</script>

結(jié)果:

查看圖片

在li中添加alt是錯(cuò)誤的,它只能用在img、area和input元素中(包括applet元素)。對(duì)于input元素,alt屬性意在用來替換提交按鈕的圖片。在這里為了很詳細(xì)說明attr()方法,沒有合適的屬性,所有用了alt進(jìn)行舉例,只供學(xué)習(xí)參考attr()方法用法。

在此說明下alt和tite的區(qū)別。

alt:這是用以描述圖形的文字,當(dāng)圖片無法顯示時(shí),這些文字會(huì)替代圖片而被顯示。當(dāng)鼠標(biāo)移至圖片上該些文字亦會(huì)顯示。
title:是鼠標(biāo)放上去之后,會(huì)顯示出來的文字。

那么怎么刪除屬性呢?

jquery中刪除屬性的關(guān)鍵詞是: removeAttr 注意A是大寫的. 看看怎么用的:
同樣是用法一中的html代碼, 我想刪掉li的title屬性, 那么就這樣:

<script>
$("ul li:eq(1)").removeAttr ("title");
</script>

就這么簡(jiǎn)單, attr 其實(shí)就是原生js中 getAttribute 的簡(jiǎn)化實(shí)現(xiàn), 而removeAttr 就是 removeAttribute 的簡(jiǎn)寫了。

那么是否有跟attr()相似的屬性呢?

jquery中val()與之類似
$(this).val();獲取某個(gè)元素節(jié)點(diǎn)的value值,相當(dāng)于$(this).attr("value");
$(this).val(value);設(shè)置某個(gè)元素節(jié)點(diǎn)的value值,相當(dāng)于$(this).attr("value",value);

二、jQuery的prop()方法:

prop()函數(shù)用于設(shè)置或返回當(dāng)前jQuery對(duì)象所匹配的元素的屬性值。

該函數(shù)屬于jQuery對(duì)象(實(shí)例)。如果需要?jiǎng)h除DOM元素的屬性,請(qǐng)使用removeProp()函數(shù)。

語法

jQuery 1.6 新增該函數(shù)。prop()函數(shù)有以下兩種用法:

用法一:

jQueryObject.prop( propertyName [, value ] )
設(shè)置或返回指定屬性propertyName的值。如果指定了value參數(shù),則表示設(shè)置屬性propertyName的值為value;如果沒有指定value參數(shù),則表示返回屬性propertyName的值。

參數(shù)value還可以是函數(shù),prop()將根據(jù)匹配的所有元素遍歷執(zhí)行該函數(shù),函數(shù)中的this指針將指向?qū)?yīng)的DOM元素。prop()還會(huì)為函數(shù)傳入兩個(gè)參數(shù):第一個(gè)參數(shù)就是該元素在匹配元素中的索引,第二個(gè)參數(shù)就是該元素propertyName屬性當(dāng)前的值。函數(shù)的返回值就是為該元素的propertyName屬性設(shè)置的值。

用法二:

jQueryObject.prop( object )
以對(duì)象形式同時(shí)設(shè)置任意多個(gè)屬性的值。對(duì)象object的每個(gè)屬性對(duì)應(yīng)propertyName,屬性的值對(duì)應(yīng)value。

注意:prop()函數(shù)的所有"設(shè)置屬性"操作針對(duì)的是當(dāng)前jQuery對(duì)象所匹配的每一個(gè)元素;所有"讀取屬性"的操作只針對(duì)第一個(gè)匹配的元素。
參數(shù)

請(qǐng)根據(jù)前面語法部分所定義的參數(shù)名稱查找對(duì)應(yīng)的參數(shù)。

參數(shù) 描述 propertyName String類型指定的屬性名稱。 value 可選/Object/Function類型指定的屬性值,或返回屬性值的函數(shù)。 object Object類型指定的對(duì)象,用于封裝多個(gè)鍵值對(duì),同時(shí)設(shè)置多項(xiàng)屬性。 參數(shù)value可以是包括對(duì)象和數(shù)組在內(nèi)的任意類型。

返回值

prop()函數(shù)的返回值是任意類型,返回值的類型取決于當(dāng)前prop()函數(shù)執(zhí)行的是"設(shè)置屬性"操作還是"讀取屬性"操作。

如果prop()函數(shù)執(zhí)行的是"設(shè)置屬性"操作,則返回當(dāng)前jQuery對(duì)象本身;如果是"讀取屬性"操作,則返回讀取到的屬性值。

如果當(dāng)前jQuery對(duì)象匹配多個(gè)元素,返回屬性值時(shí),prop()函數(shù)只以其中第一個(gè)匹配的元素為準(zhǔn)。如果該元素沒有指定的屬性,則返回undefined。

prop()和attr()的主要區(qū)別:prop()函數(shù)針對(duì)的是DOM元素(JS Element對(duì)象)的屬性,attr()函數(shù)針對(duì)的是DOM元素所對(duì)應(yīng)的文檔節(jié)點(diǎn)的屬性。詳情請(qǐng)查看jQuery函數(shù)attr()和prop()的區(qū)別。

注意事項(xiàng)

1、如果通過prop()函數(shù)更改<input>和<button>元素的type屬性,在多數(shù)瀏覽器上將會(huì)拋出一個(gè)錯(cuò)誤,因?yàn)樵搶傩砸话悴辉试S在后期更改。

2、如果使用prop()函數(shù)操作表單元素的checked、selected、disabled等屬性,如果該元素被選中(或禁用),則返回true,否則(意即HTML中沒有該屬性)返回false。

3、prop()函數(shù)還可以設(shè)置或返回DOM元素的Element對(duì)象上的某些屬性,例如:tagName、selectedIndex、nodeName、nodeType、ownerDocument、defaultChecked和defaultSelected等屬性。

4、在IE9及更早版本中,如果使用prop()函數(shù)設(shè)置的屬性值不是一個(gè)簡(jiǎn)單的原始值(String、Number、Boolean),并且在對(duì)應(yīng)的DOM元素被銷毀之前,該屬性沒有被移除,則可能會(huì)導(dǎo)致內(nèi)存泄漏問題。如果你只是為了存儲(chǔ)數(shù)據(jù),建議你使用data()函數(shù),以避免內(nèi)存泄漏問題。

示例&說明

以下面這段HTML代碼為例:

<div id="n1">
  <p id="n2" class="demo test" data-key="UUID" data_value="1235456465">CodePlayer</p>
  <input id="n3" name="order_id" type="checkbox" value="1">
  <input id="n4" name="order_id" type="checkbox" checked="checked" value="2">
</div>

我們編寫如下jQuery代碼:

var $n2 = $("#n2");
// prop()操作針對(duì)的是元素(Element對(duì)象)的屬性,而不是元素節(jié)點(diǎn)(HTML文檔)的屬性
document.writeln( $n2.prop("data-key") ); // undefined
document.writeln( $n2.prop("data_value") ); // undefined
document.writeln( $n2.prop("id") ); // n2
document.writeln( $n2.prop("tagName") ); // P
document.writeln( $n2.prop("className") ); // demo test
document.writeln( $n2.prop("innerHTML") ); // CodePlayer
document.writeln( typeof $n2.prop("getAttribute") ); // function
// prop()設(shè)置的屬性也是針對(duì)元素(Element對(duì)象),因此也可以通過元素本身直接訪問
$n2.prop("prop_a", "CodePlayer");
document.writeln( $n2[0].prop_a ); // CodePlayer
var n2 = document.getElementById("n2");
document.writeln( n2.prop_a ); // CodePlayer
// 以對(duì)象形式同時(shí)設(shè)置多個(gè)屬性,屬性值可以是對(duì)象、數(shù)組等任意類型
$n2.prop( { 
  prop_b: "baike",
  prop_c: 18,
  site: { name: "CodePlayer", url: "http://www.gimoo.net/" }
} );
document.writeln( $n2[0].prop_c ); // 18
document.writeln( $n2[0].site.url ); // http://www.gimoo.net/
// 反選所有的復(fù)選框(沒選中的改為選中,選中的改為取消選中)
$("input:checkbox").prop("checked", function(index, oldValue){
  return !oldValue;
});

附:jquery中attr和prop的區(qū)別

在高版本的jquery引入prop方法后,什么時(shí)候該用prop?什么時(shí)候用attr?它們兩個(gè)之間有什么區(qū)別?這些問題就出現(xiàn)了。

關(guān)于它們兩個(gè)的區(qū)別,網(wǎng)上的答案很多。這里談?wù)勎业男牡茫业男牡煤芎?jiǎn)單:

對(duì)于HTML元素本身就帶有的固有屬性,在處理時(shí),使用prop方法。
對(duì)于HTML元素我們自己自定義的DOM屬性,在處理時(shí),使用attr方法。

上面的描述也許有點(diǎn)模糊,舉幾個(gè)例子就知道了。

<a target="_self" class="btn">百度</a>

這個(gè)例子里<a>元素的DOM屬性有“href、target和class",這些屬性就是<a>元素本身就帶有的屬性,也是W3C標(biāo)準(zhǔn)里就包含有這幾個(gè)屬性,或者說在IDE里能夠智能提示出的屬性,這些就叫做固有屬性。處理這些屬性時(shí),建議使用prop方法。

<a id="link1" action="delete">刪除</a>

這個(gè)例子里<a>元素的DOM屬性有“href、id和action”,很明顯,前兩個(gè)是固有屬性,而后面一個(gè)“action”屬性是我們自己自定義上去的,<a>元素本身是沒有這個(gè)屬性的。這種就是自定義的DOM屬性。處理這些屬性時(shí),建議使用attr方法。使用prop方法取值和設(shè)置屬性值時(shí),都會(huì)返回undefined值。

再舉一個(gè)例子:

<input id="chk1" type="checkbox" />是否可見
<input id="chk2" type="checkbox" checked="checked" />是否可見

像checkbox,radio和select這樣的元素,選中屬性對(duì)應(yīng)“checked”和“selected”,這些也屬于固有屬性,因此需要使用prop方法去操作才能獲得正確的結(jié)果。

$("#chk1").prop("checked") == false
$("#chk2").prop("checked") == true

如果上面使用attr方法,則會(huì)出現(xiàn):

$("#chk1").attr("checked") == undefined
$("#chk2").attr("checked") == "checked"

希望本文所述對(duì)大家jQuery程序設(shè)計(jì)有所幫助。



主站蜘蛛池模板: 抖音网页版登录入口| 故宫博物院思维导图| 寡妇一级毛片免费看| 周岁封酒| 上山悠亚| 张柏芝艳照无删减版| 雀圣 电影| 胎儿生长指标对照表| 王渝萱全部电影| 山西电视台今天电视节目表| 我的神我要赞美你| sexo| 贝瓦儿歌菊花开| 黄日华版射雕英雄传| 二胡独奏北国之春| 冷血惊魂| porn4k| 那年秋天| 宇宙魔方| 安娜情欲| 倪敏然| 美国伦理三颗熟樱桃| 男人伤感失落孤独头像| 女忍者椿的心事| ptt培训| 吉泽明步 番号 | 张柏芝惊艳照片| 沙漠电影高清在线播放| 天赐的声音在哪个平台播出| 写我的好朋友二年级作文| 彭丹三级裸奶视频| n开头的字| 国产精品久久久久精品三级ⅰ | 妙想天开| 安全管理论文| 怀男孩和女孩有什么区别| 色天使美国| 爱之梦钢琴谱| 高等学校毕业生登记表自我鉴定怎么写| 天空骑士| 烽火硝烟里的青春演员表|

!!!站長(zhǎng)長(zhǎng)期在線接!!!

網(wǎng)站、小程序:定制開發(fā)/二次開發(fā)/仿制開發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長(zhǎng)微信:lxwl520520

站長(zhǎng)QQ:1737366103