老司机91精品网站在线观看-老司机67194免费观看-老司国产精品视频-老熟人老女人国产老太-中文字幕日本在线-中文字幕日本一区久久

從零開始學習jQuery (四) 使用jQuery操作元素的屬性與樣式

2013-4-11    藍藍設計的小編

轉載藍藍設計(   www.hk66688.com  )是一家專注而深入的設計機構 ,為期望卓越的國內外企業提供有效的   BS界面設計 、 cs界面設計 、  ipad界面設計   、  包裝設計 、  圖標定制 、  用戶體驗 、交互設計、   網站建設 平面設計服務

來源:http://www.cnblogs.com/zhangziqiu/archive/2009/05/05/jQuery-Learn-4.html

如果您想訂閱本博客內容,每天自動發到您的郵箱中,   請點這里

一.摘要

本篇文章講解如何使用jQuery獲取和操作元素的屬性和CSS樣式. 其中DOM屬性和元素屬性的區分值得大家學習.

 

二.前言

通過前面幾章我們已經能夠完全控制jQuery包裝集了,  無論是通過選擇器選取對象, 或者從包裝集中刪除,過濾元素. 本章將講解如何使用jQuery獲取和修改元素屬性和樣式.

 

三. 區分DOM屬性和元素屬性

一個img標簽:

<img src="images/image.1.jpg" id="hibiscus" alt="Hibiscus" class="classA" />


 

通常開發人員習慣將id, src, alt等叫做這個元素的"屬性". 我將其稱為"元素屬性". 但是在解析成DOM對象時, 實際瀏覽器最后會將標簽元素解析成"DOM對象", 并且將元素的"元素屬性"存儲為"DOM屬性". 兩者是有區別的. 
雖然我們設置了元素的src是相對路徑:images/image.1.jpg 
但是在"DOM屬性"中都會轉換成絕對路徑:http://localhost/images/image.1.jpg.

甚至有些"元素屬性"和"DOM屬性"的名稱都不一樣,比如上面的元素屬性class, 轉換為DOM屬性后對應className.

牢記, 在javascript中我們可以直接獲取或設置"DOM屬性":

    <script type="text/javascript">         $(function() {
            var img1 = document.getElementById("hibiscus");
            alert(img1.alt);
            img1.alt = "Change the alt element attribute";
            alert(img1.alt);
        })
    </script>


所以如果要設置元素的CSS樣式類, 要使用的是"DOM屬性"className"而不是"元素屬性"class:

img1.className = "classB";


四. 操作"DOM屬性"

在jQuery中沒有包裝操作"DOM屬性"的函數, 因為使用javascript獲取和設置"DOM屬性"都很簡單. 在jQuery提供了each()函數用于遍歷jQuery包裝集, 其中的this指針是一個DOM對象, 所以我們可以應用這一點配合原生javascript來操作元素的DOM屬性:

            $("img").each(function(index) {
                alert("index:" + index + ", id:" + this.id + ", alt:" + this.alt);
                this.alt = "changed";
                alert("index:" + index + ", id:" + this.id + ", alt:" + this.alt);
            });

下面是each函數的說明:

each( callback )  Returns: jQuery包裝集

對包裝集中的每一個元素執行callback方法. 其中callback方法接受一個參數, 表示當前遍歷的索引值,從0開始.

 

五. 操作"元素屬性"

我們可以使用javascript中的getAttribute和setAttribute來操作元素的"元素屬性".

在jQuery中給你提供了attr()包裝集函數, 能夠同時操作包裝集中所有元素的屬性:

名稱 說明 舉例

attr( name )

取得第一個匹配元素的屬性值。通過這個方法可以方便地從第一個匹配元素中獲取一個屬性的值。如果元素沒有相應屬性,則返回 undefined 。 返回文檔中第一個圖像的src屬性值: 
$("img").attr("src");
attr( properties )

將一個“名/值”形式的對象設置為所有匹配元素的屬性。

這是一種在所有匹配元素中批量設置很多屬性的最佳方式。 注意,如果你要設置對象的class屬性,你必須使用'className' 作為屬性名。或者你可以直接使用.addClass( class ) 和 .removeClass( class ).

為所有圖像設置src和alt屬性: 
$("img").attr({ src: "test.jpg", alt: "Test Image" });
attr( key, value ) 為所有匹配的元素設置一個屬性值。 為所有圖像設置src屬性: 
$("img").attr("src","test.jpg");
attr( key, fn )

為所有匹配的元素設置一個計算的屬性值。

不提供值,而是提供一個函數,由這個函數計算的值作為屬性值。

把src屬性的值設置為title屬性的值: 
$("img").attr("title", function() { return this.src });
removeAttr( name ) 從每一個匹配的元素中刪除一個屬性 將文檔中圖像的src屬性刪除: 
$("img").removeAttr("src"); 

 

當使用id選擇器時常常返回只有一個對象的jQuery包裝集, 這個時侯常使用attr(name)函數獲得它的元素屬性:

function testAttr1(event) {
   alert($("#hibiscus").attr("class"));
}


注意attr(name)函數只返回第一個匹配元素的特定元素屬性值. 而attr(key, name)會設置所有包裝集中的元素屬性:

//修改所有img元素的alt屬性 $("img").attr("alt", "修改后的alt屬性");


 attr( properties ) 可以一次修改多個元素屬性:

$("img").attr({title:"修改后的title", alt: "同時修改alt屬性"});


另外雖然我們可以使用 removeAttr( name ) 刪除元素屬性, 但是對應的DOM屬性是不會被刪除的, 只會影響DOM屬性的值.

比如將一個input元素的readonly元素屬性去掉,會導致對應的DOM屬性變成false(即input變成可編輯狀態):

$("#inputTest").removeAttr("readonly");

 

六,修改CSS樣式

修改元素的樣式, 我們可以修改元素CSS類或者直接修改元素的樣式.

一個元素可以應用多個css類, 但是不幸的是在DOM屬性中是用一個以空格分割的字符串存儲的, 而不是數組. 所以如果在原始javascript時代我們想對元素添加或者刪除多個屬性時, 都要自己操作字符串.

jQuery讓這一切變得異常簡單. 我們再也不用做那些無聊的工作了.

1. 修改CSS類

下表是修改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");

 

七.獲取常用屬性

雖然我們可以通過獲取屬性,特性以及CSS樣式來取得元素的幾乎所有信息,  但是注意下面的實驗:

<!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>     <title>獲取對象寬度</title>     <script type="text/javascript" src="scripts/jquery-1.3.2-vsdoc2.js"></script>     <script type="text/javascript">
        $(function()
        {
            alert("attr(\"width\"):" + $("#testDiv").attr("width")); //undifined             alert("css(\"width\"):" + $("#testDiv").css("width")); //auto(ie6) 或 1264px(ff)             alert("width():" + $("#testDiv").width()); //正確的數值1264             alert("style.width:" +  $("#testDiv")[0].style.width ); //空值         })
    </script> </head> <body>     <div id="testDiv">         測試文本</div> </body> </html>


我們希望獲取測試圖層的寬度,  使用attr方法獲取"元素特性"為undifined, 因為并沒有為div添加width. 而使用css()方法雖然可以獲取到style屬性的值, 但是在不同瀏覽器里返回的結果不同, IE6下返回auto, 而FF下雖然返回了正確的數值但是后面帶有"px". 所以jQuery提供了width()方法, 此方法返回的是正確的不帶px的數值.

針對上面的問題, jQuery為常用的屬性提供了獲取和設置的方法, 比如width()用戶獲取元素的寬度, 而 width(val)用來設置元素寬度.

下面這些方法可以用來獲取元素的常用屬性值:

1.寬和高相關 Height and Width

名稱 說明 舉例
height( ) 取得第一個匹配元素當前計算的高度值(px)。 獲取第一段的高: 
$("p").height();
height( val ) 為每個匹配的元素設置CSS高度(hidth)屬性的值。如果沒有明確指定單位(如:em或%),使用px。 把所有段落的高設為 20: 

$("p").height(20);

width( ) 取得第一個匹配元素當前計算的寬度值(px)。 獲取第一段的寬: 
$("p").width();
width( val )

為每個匹配的元素設置CSS寬度(width)屬性的值。

如果沒有明確指定單位(如:em或%),使用px。

將所有段落的寬設為 20: 

$("p").width(20);

innerHeight( )

獲取第一個匹配元素內部區域高度(包括補白、不包括邊框)。 
此方法對可見和隱藏元素均有效。

見最后示例
innerWidth( )

獲取第一個匹配元素內部區域寬度(包括補白、不包括邊框)。 
此方法對可見和隱藏元素均有效。

見最后示例
outerHeight( [margin] )

獲取第一個匹配元素外部高度(默認包括補白和邊框)。 
此方法對可見和隱藏元素均有效。

見最后示例
outerWidth( [margin] )

獲取第一個匹配元素外部寬度(默認包括補白和邊框)。 
此方法對可見和隱藏元素均有效。

見最后示例

 

關于在獲取長寬的函數中, 要區別"inner", "outer"和height/width這三種函數的區別:

image

outerWith可以接受一個bool值參數表示是否計算margin值.

相信此圖一目了然各個函數所索取的范圍. 圖片以width為例說明的, height的各個函數同理.  

2.位置相關 Positioning

另外在一些設計套彈出對象的腳本中,常常需要動態獲取彈出坐標并且設置元素的位置.

但是很多的計算位置的方法存在著瀏覽器兼容性問題,  jQuery中為我們提供了位置相關的各個函數:

名稱 說明 舉例
offset( )

獲取匹配元素在當前窗口的相對偏移。

返回的對象包含兩個整形屬性:top 和 left。此方法只對可見元素有效。

獲取第二段的偏移: 
var p = $("p:last"); 
var offset = p.offset(); 
p.html( "left: " + offset.left + ", top: " + offset.top );
position( )

獲取匹配元素相對父元素的偏移。

返回的對象包含兩個整形屬性:top 和 left。為計算結果,請在補白、邊框和填充屬性上使用像素單位。此方法只對可見元素有效。

獲取第一段的偏移: 
var p = $("p:first"); 
var position = p.position(); 
$("p:last").html( "left: " + position.left + ", top: " + position.top );
scrollTop( )

獲取匹配元素相對滾動條頂部的偏移。

此方法對可見和隱藏元素均有效。

獲取第一段相對滾動條頂部的偏移: 
var p = $("p:first"); 
$("p:last").text( "scrollTop:" + p.scrollTop() );
scrollTop( val )

傳遞參數值時,設置垂直滾動條頂部偏移為該值。

此方法對可見和隱藏元素均有效。

設定垂直滾動條值: 
$("div.demo").scrollTop(300);
scrollLeft( )

獲取匹配元素相對滾動條左側的偏移。

此方法對可見和隱藏元素均有效。

獲取第一段相對滾動條左側的偏移: 
var p = $("p:first"); 
$("p:last").text( "scrollLeft:" + p.scrollLeft() );
scrollLeft( val )

傳遞參數值時,設置水平滾動條左側偏移為該值。

此方法對可見和隱藏元素均有效。

設置相對滾動條左側的偏移: 
$("div.demo").scrollLeft(300);

 

八.總結

本篇文章主要講解如何使用jQuery操作元素的屬性和修改樣式. 請大家主要注意元素屬性和DOM屬性的區別. 下一篇文章將講解最重要的事件, 介紹如何綁定事件, 操作事件對象等.

 

 

出品公司:

藍藍設計(北京蘭亭妙微科技有限公司)是一家專注而深入的設計機構 ,為期望卓越的國內外企業提供有效的視覺設計、ui界面設計、網站建設、用戶體驗服務,涉及互聯網、IT軟件、電子、銀行、保健品等多個行業,并建立了良好的口碑,積累了豐富的經驗。 
全國統一服務熱線  400-608-6026  QQ:896757335

日歷

鏈接

個人資料

藍藍設計的小編 http://www.hk66688.com

存檔

Y1111111少妇影院| 亚洲AV无码成人网站国产网站| 国产偷窥真人视频在线观看 | 亚洲AV色香蕉一区二区蜜桃小说 | 人人爽人人爽人人片A∨不卡| 国产成人无码午夜视频在线观看| 亚洲精品TY久久久久久久久久 | 亚洲AV日韩精品一区二区三区| 欧洲成人一区二区三区| xxxx免费网站| 亚洲AV永久综合在线观看尤物 | 狠狠躁夜夜躁人人爽碰AV| 中文字幕无码AV正片AV| 少妇被躁爽到高潮无码文| 精品中文字幕久久久无码中文Av| 宝宝湿透了还嘴硬怎么回事| 2021国内精品久久久久精品K| 新妺妺窝人体色WWW| 欧美性色黄大片WWW喷水| 久久亚洲日韩看片无码| 精品人妻无码一区二区色欲AⅤ| 国产成人精品三级麻豆| 337P日本欧洲亚洲大胆精筑| 无码任你躁久久久久久老妇| 欧美最猛黑人XXXⅩ猛男爽 | 黑人巨大精品欧美一区二区免费 | 欧美人与性动交α欧美精品| 国产精成人品日日拍夜夜免费| 99精产国品一二三产区MBA| 亚洲欧美精品一中文字幕| 亚洲狠狠色丁香婷婷综合| 亚洲AⅤ成人精品无码| 日韩欧美亚洲国产精品字幕久久久| 精品国模一区二区三区| 丰满妇女强高潮ⅩXXX| 影音先锋女人AV女色资源 | 国语做受对白XXXXmp4| 精品人伦一区二区三区蜜桃| 国产ΑV在线ΑV天堂AⅤ国产| 国产成人无码A区视频在线观看| 办公室揉弄高潮嗯啊免费视频| 亚洲国产精品久久久久婷婷软件| 亚洲国产精品成人一区二区在线 | 波多野结衣系列18部无码观看A| 伊人久久大香线蕉在观看| 为什么穿裙子方便打野| 欧美最猛黑人XXXⅩ猛男视频 | CAOPOREN个人免费公开| 亚洲色大成网站WWW久久| 亚洲AV永久无码精品无码影片 | 欧美午夜精品一区二区蜜桃 | 成人午夜又粗又硬又长| 野花韩国高清免费神马百度| 亚欧美日乱码视频在线观看| 新婚之夜玩弄人妻系列| 天堂AV无码AV一区二区三区| 亚洲熟妇无码久久精品疯| 亚洲成AV人片在线观看橙子| 亚洲AⅤ无码专区在线观看Q| 四虎国产精品永久在线| 日产精品卡1卡2卡三卡区别| 午夜毛片不卡高清免费看| 亚洲AV成人片乱码色午夜| 亚洲AV秘 无码一区白峰美| 亚洲日韩AV一区二区三区四区| 亚洲成AV人在线播放无码| 亚洲大成色WWW永久泡芙| 亚洲AV永久中文无码精品综合| 搡老女人老妇老熟女HHD| 欧美性爱乱伦视频| 日产精品一线二线三线京东| 色哟哟在线视频精品一区| 亚洲欧美精品伊人久久| 一二三四在线视频观看社区| AV永久天堂一区二区三区| 与狐妖的同居生活| 岳潮湿的大肥梅开二度第三部最新 | 公么大龟弄得我好舒服秀婷视频| 99久久精品无码一区二区毛片| А天堂中文在线官网在线| 国产熟妇人妻ⅩXXXX麻豆网址| 久久人人爽人人爽人人AV东京热| 免费网站看V片在线18禁| 久久人人97超碰CAOPORE| 久久精品亚洲中文无东京热| 久久久久亚洲AV成人网电影| 男吃奶玩乳尖高潮视频午夜| 久久人人爽人人人人片AV| 久久无码人妻一区二区三区| 久久久精品人妻一区二区三区四| 久久久久精品国产亚洲AV| 久久亚洲春色中文字幕久久久| 欧美又粗又大XXXXBBBB疯| 挺进大幂幂的滋润花苞御女天下| 无码专区丰满人妻斩六十路| 亚洲美女高潮久久久久| 成人精品视频一区二区三区不卡 | 中文在线中文资源| 亚洲AV美国AV产亚洲AV图片| 日韩v亚洲v欧美v精品综合| 烂货我捏烂你的奶| 国产在沙发上午睡被强| 大战丰满人妻性色AV偷偷| 中文字幕日本最新乱码视频| 亚洲精品AⅤ无码精品| 天美传媒免费观看一二三在线| 欧美内射AAAAAAXXXXX| 久久久久久精品免费免费HD| 国产精品有码无码AV在线播放| 被老外添嫩苞添高潮NP电影| 中文字幕人妻互换AV久久| 亚洲国产精品久久久久制服| 铜铜铜铜铜铜铜好多水谜妹| 人妻无码熟妇乱又伦精品视频| 老师上课没戴奶罩看到奶头| 后入内射无码人妻一区| 国产激情久久久久影院蜜桃AV| 芭乐小猪幸福宝丝瓜草莓官网| 中国极品少妇XXXXX| 亚洲欧美一区二区成人片| 午夜国产精品一二三区无码小说| 日日摸夜夜添夜夜添亚洲女人| 欧美VA久久久噜噜噜久久| 久久久久亚洲AV成人片丁香| 好男人2019在线视频播放观看 | H纯肉无遮掩3D动漫在线观看| 伊人精品无码AV一区二区三区| 亚洲国产精品久久久久婷婷老年| 无码中文人妻在线三区| 涩爱亚洲色欲AV无码成人专区| 破了亲妺妺的处免费视频国产| 麻豆影视视频在线观看完整版| 精品综合久久久久久8888| 国产一区二区H无遮挡| 国产成人无码AV在线播放DVD| 成人免费视频在线观看| SEERX性欧美老妇| 51无人区码一码二码三码免费| 一二三四影视在线观看免费视频 | 综合成人亚洲偷自拍色| 亚洲午夜无码片在线观看影院百度 | 97人人超碰国产精品最新o| 一二三四日本高清社区5| 亚洲人成网站色7799| 亚洲国产成人久久一区二区三区| 香蕉久久AⅤ一区二区三区| 婷婷5月女内射AV| 熟妇人妻不卡中文字幕| 日韩亚洲欧美久久久WWW综合| 人妻中文字幕乱人伦在线| 欧洲美熟女乱又伦免费视频| 欧美疯狂3p群体交乱视频丨zu| 免费久久99精品国产自在现| 看国产一毛片在线看手机看| 久久久久久久久久久综合日本| 久久99热狠狠色精品一区| 精品久久综合1区2区3区激情| 黑人大荫道BBWBBB高潮潮喷| 国精产品一二二区传媒有哪些| 国产日韩在线欧美视频| 国产乱码一区二区三区免费| 国产精品国产三级国快看| 国产成人免费AV片在线观看| 国产99久9在线 | 传媒| 国产爱豆剧传媒在线观看视频 | AV无码国产在线看免费APP| 97在线视频人妻无码| 8x8x熟妇一区二区三区| 7777色情XXXX欧美| 99久久久国产精品免费| 99视频精品全部在线观看| 97人伦影院A级毛片| 99热门精品一区二区三区无码 | 亚洲同性男GV网站SEARCH| 亚洲色成人四虎在线观看| 亚洲熟伦熟妇AV无码春| 亚洲综合无码一区二区三区| 伊人色综合视频一区二区三区| 永久免费的啪啪网站免费观看浪潮| 曰本无码人妻丰满熟妇啪| 中国丰满熟妇XXXX| 99热成人精品热久久6网站| VICTORYDAY刺激性另类| 啊轻点灬大JI巴太粗太长了在线| 宝贝小嫩嫩好紧好爽H在线视频| 成人免费A级毛片无码片在线播放| 东北老熟女疯狂作爱视频| 国产成人免费ā片在线观看老同学 | NARUTOMANGA无尽纲手| 波多野结衣乳喷高潮视频 | 欧美极品少妇XXXXⅩ高跟鞋| 欧洲美女黑人粗性暴交视频 | 免费看黑人强伦姧人妻| 欧美疯狂性受XXXXX另类| 人妻少妇看A偷人无码| 搡老女人老妇老熟女hd| 少妇ASS浓PICSXXXXB| 尤物YW午夜国产精品视频| 国产亚洲日韩网曝欧美台湾 | 精品国产一区二区三区香蕉|