本文實例講述了jQuery中attr()與prop()函數用法。分享給大家參考,具體如下:
一、jQuery的attr()方法
jquery中用attr()方法來取得和設定元素屬性,attr是attribute(屬性)的縮寫,在jQuery DOM運算中會常用到attr(),attr()有4個表達式。
1. attr(屬性名稱) //取得屬性的值(取得第一個符合元素的屬性值。透過這個方法可以方便地從第一個符合元素中取得一個屬性的值。如果元素沒有對應屬性,則傳回undefined )
2. attr(屬性名稱, 屬性值) //設定屬性的值(為所有符合的元素設定一個屬性值。)
3. attr(屬性名稱,函數值) //設定屬性的函數值 (為所有符合的元素設定一個計算的屬性值。不提供值,而是提供一個函數,由這個函數計算的值作為屬性值。
4.attr(properties) //為指定元素設定多個屬性值,即:{屬性名稱一: “屬性值一” , 屬性名稱二: “屬性值二” , … … }。 (這是在所有匹配元素中批量設定很多屬性的最佳方式。請注意,如果你要設定物件的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="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>結果:
1.2使用attr(name)取得alt值:
<script> alert($("ul li:eq(1)").attr("alt")); </script>結果:
2. attr(name,value) //設定屬性的值
2.1使用attr(name,value)修改title值為:不吃橘子
<script> $("ul li:eq(1)").attr("title","不吃橘子"); alert($("ul li:eq(1)").attr("title")); </script>結果:
3. attr(name,fn) //設定屬性的函數值
3.1把alt屬性的值設定為title屬性的值。
<script> $("ul li:eq(1)").attr("title",function(){ return this.alt}); alert($("ul li:eq(1)").attr("title")); </script>結果:
4.attr(properties) //將一個「名稱/值」形式的物件設定為所有符合元素的屬性
4.1取得
- 裡第2個
- 設定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>
結果:4.2取得
- 裡第2個
- 設定class。
<script> $("ul li:eq(1)").attr({className:"lili"}); </script>
結果:4.3取得
- 裡第2個
- 設定id。
<script> $("ul li:eq(1)").attr({id:"lili"}); </script>
結果:4.4取得
- 裡第2個
- 設定style。
<script> $("ul li:eq(1)").attr({style:"color:red"}); </script>
結果:在li中加入alt是錯誤的,它只能用在img、area和input元素中(包括applet元素)。對於input元素,alt屬性意在用來替換提交按鈕的圖片。這裡為了很詳細說明attr()方法,沒有適當的屬性,所有用了alt進行舉例,只供學習參考attr()方法用法。
alt:這是用以描述圖形的文字,當圖片無法顯示時,這些文字會取代圖片而被顯示。當滑鼠移至圖片上該些文字也會顯示。
title:是滑鼠放上去之後,會顯示出來的文字。
那要怎麼刪除屬性呢?jquery中刪除屬性的關鍵字是: removeAttr 注意A是大寫的. 看看怎麼用的:
同樣是用法一中的html代碼, 我想刪掉li的title屬性, 那麼就這樣:
就這麼簡單, attr 其實就是原生js中 getAttribute 的簡化實作, 而removeAttr 就是 removeAttribute 的簡寫了。
那麼是否有跟attr()相似的屬性呢?
jquery中val()與之類似,
$(this).val();取得某個元素節點的value值,相當於$(this).attr("value");
$(this).val(value);設定某個元素節點的value值,相當於$(this).attr("value",value);二、jQuery的prop()方法:
prop()函數用於設定或傳回目前jQuery物件所匹配的元素的屬性值。
函數屬於jQuery物件(實例)。如果需要刪除DOM元素的屬性,請使用removeProp()函數。
文法
jQuery 1.6 新增此函數。 prop()函數有以下兩種用法:
用法一:
jQueryObject.prop( propertyName [, value ] )
設定或傳回指定屬性propertyName的值。如果指定了value參數,表示設定屬性propertyName的值為value;如果沒有指定value參數,則表示傳回屬性propertyName的值。參數value也可以是函數,prop()將根據匹配的所有元素遍歷執行該函數,函數中的this指標將指向對應的DOM元素。 prop()也會為函數傳入兩個參數:第一個參數就是該元素在符合元素中的索引,第二個參數就是該元素propertyName屬性目前的值。函數的傳回值就是為該元素的propertyName屬性所設定的值。
用法二:
jQueryObject.prop( object )
以物件形式同時設定任意多個屬性的值。物件object的每個屬性對應propertyName,屬性的值對應value。注意:prop()函數的所有"設定屬性"操作針對的是當前jQuery物件所匹配的每一個元素;所有"讀取屬性"的操作只針對第一個匹配的元素。
參數請根據前面語法部分所定義的參數名稱尋找對應的參數。
Parameters Description propertyName String type specifies the attribute name. value 可選/Object/Function類型指定的屬性值,或傳回屬性值的函數。 object Object類型指定的對象,用於封裝多個鍵值對,同時設定多項屬性。 返回值
prop()函数的返回值是任意类型,返回值的类型取决于当前prop()函数执行的是"设置属性"操作还是"读取属性"操作。
如果prop()函数执行的是"设置属性"操作,则返回当前jQuery对象本身;如果是"读取属性"操作,则返回读取到的属性值。
如果当前jQuery对象匹配多个元素,返回属性值时,prop()函数只以其中第一个匹配的元素为准。如果该元素没有指定的属性,则返回undefined。
prop()和attr()的主要区别:prop()函数针对的是DOM元素(JS Element对象)的属性,attr()函数针对的是DOM元素所对应的文档节点的属性。详情请查看jQuery函数attr()和prop()的区别。
注意事项
1、如果通过prop()函数更改和
2、如果使用prop()函数操作表单元素的checked、selected、disabled等属性,如果该元素被选中(或禁用),则返回true,否则(意即HTML中没有该属性)返回false。
3、prop()函数还可以设置或返回DOM元素的Element对象上的某些属性,例如:tagName、selectedIndex、nodeName、nodeType、ownerDocument、defaultChecked和defaultSelected等属性。
4、在IE9及更早版本中,如果使用prop()函数设置的属性值不是一个简单的原始值(String、Number、Boolean),并且在对应的DOM元素被销毁之前,该属性没有被移除,则可能会导致内存泄漏问题。如果你只是为了存储数据,建议你使用data()函数,以避免内存泄漏问题。
示例&说明
以下面这段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()操作针对的是元素(Element对象)的属性,而不是元素节点(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()设置的属性也是针对元素(Element对象),因此也可以通过元素本身直接访问 $n2.prop("prop_a", "CodePlayer"); document.writeln( $n2[0].prop_a ); // CodePlayer var n2 = document.getElementById("n2"); document.writeln( n2.prop_a ); // CodePlayer // 以对象形式同时设置多个属性,属性值可以是对象、数组等任意类型 $n2.prop( { prop_b: "baike", prop_c: 18, site: { name: "CodePlayer", url: "http://www.jb51.net/" } } ); document.writeln( $n2[0].prop_c ); // 18 document.writeln( $n2[0].site.url ); // http://www.jb51.net/ // 反选所有的复选框(没选中的改为选中,选中的改为取消选中) $("input:checkbox").prop("checked", function(index, oldValue){ return !oldValue; });
附:jquery中attr和prop的区别
在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了。
关于它们两个的区别,网上的答案很多。这里谈谈我的心得,我的心得很简单:
对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。上面的描述也许有点模糊,举几个例子就知道了。
这个例子里元素的DOM属性有“href、target和class",这些属性就是元素本身就带有的属性,也是W3C标准里就包含有这几个属性,或者说在IDE里能够智能提示出的属性,这些就叫做固有属性。处理这些属性时,建议使用prop方法。
这个例子里元素的DOM属性有“href、id和action”,很明显,前两个是固有属性,而后面一个“action”属性是我们自己自定义上去的,元素本身是没有这个属性的。这种就是自定义的DOM属性。处理这些属性时,建议使用attr方法。使用prop方法取值和设置属性值时,都会返回undefined值。
再举一个例子:
是否可见
是否可见像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。
$("#chk1").prop("checked") == false $("#chk2").prop("checked") == true
如果上面使用attr方法,则会出现:
$("#chk1").attr("checked") == undefined $("#chk2").attr("checked") == "checked"
希望本文所述对大家jQuery程序设计有所帮助。
- 設定style。
- 設定id。
- 設定class。

实现方法:1、用“$("img").delay(毫秒数).fadeOut()”语句,delay()设置延迟秒数;2、用“setTimeout(function(){ $("img").hide(); },毫秒值);”语句,通过定时器来延迟。

区别:1、axios是一个异步请求框架,用于封装底层的XMLHttpRequest,而jquery是一个JavaScript库,只是顺便封装了dom操作;2、axios是基于承诺对象的,可以用承诺对象中的方法,而jquery不基于承诺对象。

修改方法:1、用css()设置新样式,语法“$(元素).css("min-height","新值")”;2、用attr(),通过设置style属性来添加新样式,语法“$(元素).attr("style","min-height:新值")”。

增加元素的方法:1、用append(),语法“$("body").append(新元素)”,可向body内部的末尾处增加元素;2、用prepend(),语法“$("body").prepend(新元素)”,可向body内部的开始处增加元素。

在jquery中,apply()方法用于改变this指向,使用另一个对象替换当前对象,是应用某一对象的一个方法,语法为“apply(thisobj,[argarray])”;参数argarray表示的是以数组的形式进行传递。

删除方法:1、用empty(),语法“$("div").empty();”,可删除所有子节点和内容;2、用children()和remove(),语法“$("div").children().remove();”,只删除子元素,不删除内容。

去掉方法:1、用“$(selector).removeAttr("readonly")”语句删除readonly属性;2、用“$(selector).attr("readonly",false)”将readonly属性的值设置为false。

on()方法有4个参数:1、第一个参数不可省略,规定要从被选元素添加的一个或多个事件或命名空间;2、第二个参数可省略,规定元素的事件处理程序;3、第三个参数可省略,规定传递到函数的额外数据;4、第四个参数可省略,规定当事件发生时运行的函数。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具