搜尋
首頁web前端js教程jQuery中attr()與prop()函數用法實例詳解(附用法區別)_jquery

本文實例講述了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和tite的差別。

          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類型指定的對象,用於封裝多個鍵值對,同時設定多項屬性。
          参数value可以是包括对象和数组在内的任意类型。

          返回值

          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程序设计有所帮助。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
jquery实现多少秒后隐藏图片jquery实现多少秒后隐藏图片Apr 20, 2022 pm 05:33 PM

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

axios与jquery的区别是什么axios与jquery的区别是什么Apr 20, 2022 pm 06:18 PM

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

jquery怎么修改min-height样式jquery怎么修改min-height样式Apr 20, 2022 pm 12:19 PM

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

jquery怎么在body中增加元素jquery怎么在body中增加元素Apr 22, 2022 am 11:13 AM

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

jquery中apply()方法怎么用jquery中apply()方法怎么用Apr 24, 2022 pm 05:35 PM

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

jquery怎么删除div内所有子元素jquery怎么删除div内所有子元素Apr 21, 2022 pm 07:08 PM

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

jquery怎么去掉只读属性jquery怎么去掉只读属性Apr 20, 2022 pm 07:55 PM

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

jquery on()有几个参数jquery on()有几个参数Apr 21, 2022 am 11:29 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

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

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

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

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具