在JS中設置節點的屬性與屬性值用到setAttribute(),獲得節點的屬性與屬性值用到getAttribute(),而在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'。)
html代碼結構:
<p title="你最喜歡的水果是。">你最喜歡的水果是?</p>
<ul>
<li title="蘋果汁">蘋果</li>
<li title="橘子汁" value="123">橘子</li>
<li title="菠蘿汁">菠蘿</li>
</ul>
1.attr(name)//獲取屬性的值
1.1 使用attr(name)獲取title值:
alert($("ul li:eq(1)").attr("title"));
結果:橘子汁
1.2 使用attr(name)獲取value值:
alert($("ul li:eq(1)").attr("value"));
結果:123
2. attr(name,value) //設置屬性的值
2.1 使用attr(name,value)修改title值為:不吃橘子
$("ul li:eq(1)").attr("title","不吃橘子");
alert($("ul li:eq(1)").attr("title"));
結果:不吃橘子
3. attr(name,fn) //設置屬性的函數值
3.1 把value屬性的值設置設給title屬性。
$("ul li:eq(1)").attr("title",function(){ return this.value});
alert($("ul li:eq(1)").attr("title"));
結果:123
4.attr(properties) //將一個“名/值”形式的對象設置為所有匹配元素的屬性
4.1 獲取<ul>里第2個<li>設置title和value屬性。
$("ul li:eq(1)").attr({title:"不喝橘子汁",value:"不是123"});
alert($("ul li:eq(1)").attr("title"));
alert($("ul li:eq(1)").attr("value"));
結果:不喝橘子汁 不是123
4.2 獲取<ul>里第2個<li>設置class。
$("ul li:eq(1)").attr({className:"lili"});
結果:第二個li的html:<li class="lili" title="橘子汁" value="123">橘子</li>
4.3 獲取<ul>里第2個<li>設置id。
$("ul li:eq(1)").attr({id:"lili"});
結果:第二個li的html:<li id="lili" title="橘子汁" value="123">橘子</li>
4.4 獲取<ul>里第2個<li>設置style。
$("ul li:eq(1)").attr({style:"color:red"});
那么怎么刪除屬性呢?
$("ul li:eq(1)").removeAttr ("title");
就這么簡單, attr 其實就是原生js中 getAttribute 的簡化實現, 而removeAttr 就是 removeAttribute 的簡寫了。
attr其他應用:
jquery 中 val() 與之類似,
$(this).val(); 獲取某個元素節點的value值,相當於 $(this).attr("value");
$(this).val(value); 設置某個元素節點的value值,相當於 $(this).attr("value",value);
- 實際操作中,需要設置多個屬性值,可一次性設置
格式: $(選擇器).attr({屬性名一: “屬性值一” , 屬性名二: “屬性值二” , … …}) eg: $(“img”).attr({src:“http://t.douban.com/lpic/s3791510.jpg” , height: “300″ , width : “500″})
- attr() 屬性設置 與 jQuery CSS 屬性設置區別:
attr() 屬性設置 與 jQuery CSS 屬性設置區別: css 是設置樣式的屬性的,如顏色,字體,背景等; //$("#newClass").css("background-color", "#d6d6d6");//改變背景色 attr 貌似是能操作所有屬性,包括Jquery未封裝的屬性。 //$("#newClassImg").attr("src", "./images/plus3.jpg");//改變圖片源
- jQuery中 html(), text(), val(), css() 方法使用 區別
html(), text(), val()用法類似: 調用方法時有參數則為設置,沒有則為取值
css(): 設置樣式
<script type="text/javascript"> $(function() { //html方法有參數則為設置,沒有則為取值 //取值 alert($("#mydiv").html()); //設值 $("#mydiv").html("我是:<font color='red'>龐傑111</font>"); alert($("#mydiv").html()); //text方法有參數則為設置,沒有則為取值,同上 //取值 alert($("#mydiv").text()); //設值 $("#mydiv").text("我是:<font color='red'>龐傑</font>"); alert($("#mydiv").text()); //val方法有參數則為設置,沒有則為取值,同上 //取值 alert($("#mydiv").val()); //設值 $("#mydiv").val("我是:<font color='red'>龐傑</font>"); alert($("#mydiv").val()); //attr方法讀取或者設置元素的屬性,對於JQuery沒有封裝的屬性(所有瀏覽器沒有差異的屬性)用attr進行操作。 //取值 alert($("#mydiv").attr("href")); //設值 $("#mydiv").attr("href", "http://www.baidu.com"); alert($("#mydiv").attr("href")); //使用removeAttr刪除屬性。刪除的屬性在源代碼中看不到,這是和清空屬性的區別。“查看源文件”只能看服務器上下載下來的那份。 //css方法設置樣式 //取的樣式 alert($("#mydiv").css("background")); //設樣式 $("#mydiv").css("background", "green"); alert($("#mydiv").css("background")); }) //val、html、text、css等是方法,不是屬性,jQuery中很少有屬性的用法,因為屬性寫法很難“鏈式編程”。 </script> </head> <body> <div id="mydiv" style="background: red"> 我是:<font color="navy">龐傑</font> </div> </body> </html>
- 可使用 attr("src", "***.html"): 在 div 中嵌套一個頁面(效果類似load()方法)
如此使用,前提:要加載的標簽必須有 src 屬性,常用於 iframe 時
示例:
主頁面:A.html<head> <meta charset="UTF-8"> <title>父級頁面</title> <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script> </head> <body> <div id="example">這是父級頁面!</div> <div id="my_content"> <!-- 嵌入頁面部分 --> <!--<iframe id="alarmTrendTabIframe" scrolling="no" src=""></iframe>--> </div> <div id="footer"> <button onclick="showMyContent();">插入div</button> </div> <script> function showMyContent() { $("#my_content").html('<iframe id="alarmTrendTabIframe" scrolling="no" src=""></iframe>'); $("#alarmTrendTabIframe").attr("src","B.html"); //load() 正確 } </script> </body> </html>