1. 程式人生 > >jquery attr和css屬性

jquery attr和css屬性

在jquery裡,css和attr都可以動態的修改html中元素的屬性。但css()是用來操縱元素style{}的,而attr()是用來操作元素固有的屬性的,且attr()的權重比css()要大,它會覆蓋css()的樣式。例:$("#txt").css("display","none")
$("#txt").css({"display":"none","width":"5px",....}) $("#txt").attr("title","zz")
下面是借鑑別人的總結說明attr的常用方法:

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獲取<ul>裡第2個<li>設定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獲取<ul>裡第2個<li>設定class。
<script>
$("ul li:eq(1)").attr({className:"lili"});
</script>
4.3獲取<ul>裡第2個<li>設定id。
<script>
$("ul li:eq(1)").attr({id:"lili"});
</script>
4.4獲取<ul>裡第2個<li>設定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屬性那麼就這樣:

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

就這麼簡單, attr 其實就是原生js中 getAttribute 的簡化實現removeAttr 就是 removeAttribute 的簡寫了。



那麼是否有跟attr()相似的屬性呢?
jquery中val()與之類似,
$(this).val();獲取某個元素節點的value值,相當於$(this).attr("value");

$(this).val(value);設定某個元素節點的value值,相當於$(this).attr("value",value);

jQuery修改操作css屬性實現方法

css()方法在使用上具有多樣性,我們先來了解css()方法基本知識。

css() 方法設定或返回被選元素的一個或多個樣式屬性。

返回 CSS 屬性 如需返回指定的 CSS 屬性的值,請使用如下語法:

css("propertyname");下面的例子將返回首個匹配元素的 background-color 值:

例項

$("p").css("background-color");

設定 CSS 屬性

如需設定指定的 CSS 屬性,請使用如下語法:

css("propertyname","value");下面的例子將為所有匹配元素設定 background-color 值:

例項

$("p").css("background-color","yellow");

設定多個 CSS 屬性

如需設定多個 CSS 屬性,請使用如下語法:

css({"propertyname":"value","propertyname":"value",...});下面的例子將為所有匹配元素設定 background-color 和 font-size:

例項

$("p").css({"background-color":"yellow","font-size":"200%"});

如我們要改變連結顏色,我們可以使用下面的程式碼:

$("#61dh a").css('color','#123456');

//這裡選擇器‘$("#61dh a")’表示ID為‘#61dh’的元素下的所有連結。 //.css(‘color’,'#123456');表示把顏色設為'#123456'如果我們需要改變多個樣式屬性,我們可以先定義屬性變數,然後直接賦值給css()方法。示例如下:

var divcss = {   background: '#EEE',       width: '478px',       margin: '10px 0 0',       padding: '5px 10px',       border: '1px solid #CCC' }; $("#result").css(divcss);

//這裡我們先定義了一個CSS樣式屬性變數‘divcss’,這類似於建立一個外部CSS檔案。 //然後通過jQuery提供的css()方法,把屬性賦給ID為'#result'的DIV。另外jQuery提供的css()方法還可以用來檢視某個元素的css屬性值。例如,我們想檢視連結的顏色,可以使用下面的程式碼:

$("#61dh a").css("color")

//和第一個例子相似,但是這裡我們只傳遞一個引數(樣式屬性)最後要介紹的是如何設定滑鼠劃過後的連結樣式(比如: 顏色)。我們無法使用選擇器直接選擇滑鼠劃過狀態下的連結,也就是說$("a:hover")是不成立的。因此我們需要用到jQuery提供的事件類方法 - hover()。值得注意的是,hover()方法需要定義兩個函式,一個是滑鼠劃過時;另一個是滑鼠劃過後。具體方法如下:

$("#61dh a").css('color','#123456');   $("#61dh a").hover(function(){   $(this).css('color','#999');   },   function(){   $(this).css('color','#123456'); });

//hover()方法的兩個函式使用用逗號分隔你或許注意到這種方法一點都不簡潔(違背了jQuery的宗旨),其實jQuery提供的hover()方法不是用來改變CSS樣式的。在實際運用中,建議使用新增/移出CSS的方法來改變滑鼠劃過的連結樣式。

還有一些常用的如addclass,hasclass我們也來看看

下表是修改CSS類相關的jQuery方法:
名稱說明例項
addClass( classes )為每個匹配的元素新增指定的類名。為匹配的元素加上 'selected' 類:  $("p").addClass("selected");
hasClass( class )判斷包裝集中是否至少有一個元素應用了指定的CSS類$("p").hasClass("selected");
removeClass( [classes] )從所有匹配的元素中刪除全部或者指定的類。從匹配的元素中刪除 'selected' 類:  $("p").removeClass("selected");
toggleClass( class )如果存在(不存在)就刪除(新增)一個類。為匹配的元素切換 'selected' 類:  $("p").toggleClass("selected");
toggleClass( class, switch )當switch是true時新增類,  當switch是false時刪除類每三次點選切換高亮樣式:  var count = 0;  $("p").click(function(){    $(this).toggleClass("highlight", count++ % 3 == 0);  });
 使用上面的方法, 我們可以將元素的CSS類像集合一樣修改, 再也不必手工解析字串.注意 addClass( class ) removeClass( [classes] ) 的引數可以一次傳入多個css類, 用空格分割,比如:$(“#btnAdd”).bind(“click”,      Function(event){$(“p”).addClass(“colorRed borderBlue”);}); removeClass方法的引數可選, 如果不傳入引數則移除全部CSS類:$(“p”).removeClass(); 2. 修改CSS樣式同樣當我們想要修改元素的具體某一個CSS樣式,即修改元素屬性"style"時,  jQuery也提供了相應的方法:
名稱說明例項
css( name )訪問第一個匹配元素的樣式屬性。取得第一個段落的color樣式屬性的值:$("p").css("color");
css( properties )把一個“名/值對”物件設定為所有匹配元素的樣式屬性。這是一種在所有匹配的元素上設定大量樣式屬性的最佳方式。將所有段落的字型顏色設為紅色並且背景為藍色:  $("p").css({ color: "#ff0011", background: "blue" });
css( name, value )在所有匹配的元素中,設定一個樣式屬性的值。數字將自動轉化為畫素值將所有段落字型設為紅色:$("p").css("color","red");