日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
手把手教你使用jQuery操作元素的屬性與樣式

系列文章:

從零開始學習jQuery之管理jQuery包裝集

從零開始學習jQuery之萬能的選擇器

從零開始學習jQuery之你必須知道的JavaScript

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

一.  區(qū)分DOM屬性和元素屬性

一個img標簽:

 
 
 
 
  1.    

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

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

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

 
 
 
 
  1.    

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

img1.className = "classB";

二  操作"DOM屬性"

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

下面是each函數(shù)的說明:

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

each( callback ) Returns: jQuery包裝集

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

三. 操作"元素屬性"

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

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

名稱說明舉例
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 )為所有匹配的元素設置一個計算的屬性值。

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

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

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

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

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

//修改所有img元素的alt屬性

$("img").attr("alt", "修改后的alt屬性");

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

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

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

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

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

四, 修改CSS樣式

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

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

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

1. 修改CSS類

下表是修改CSS類相關(guān)的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] ) 的參數(shù)可以一次傳入多個css類, 用空格分割,比如:

 
 
 
 
  1. $("#btnAdd").bind("click", function(event) { $("p").addClass("colorRed borderBlue"); });   

removeClass方法的參數(shù)可選, 如果不傳入?yún)?shù)則移除全部CSS類:

 
 
 
 
  1. $("p").removeClass()   

2. 修改CSS樣

同樣當我們想要修改元素的具體某一個CSS樣式,即修改元素屬性"style"時, jQuery也提供了相應的方法:

名稱說明實例
css( name )訪問第一個匹配元素的樣式屬性。取得第一個段落的color樣式屬性的值:
$("p").css("color");
css( properties )把一個“名/值對”對象設置為所有匹配元素的樣式屬性。

這是一種在所有匹配的元素上設置大量樣式屬性的最佳方式。

將所有段落的字體顏色設為紅色并且背景為藍色:
$("p").css({ color: "#ff0011", background: "blue" });
css( name, value )在所有匹配的元素中,設置一個樣式屬性的值。

數(shù)字將自動轉(zhuǎn)化為像素值

將所有段落字體設為紅色:
$("p").css("color","red");

#p#

五. 獲取常用屬性

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

 
 
 
 
  1.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    
  2.     
  3.     
  4.     獲取對象寬度    
  5.         
  6.         
  7.     
  8.     
  9.         
  10.         測試文本
    
  •     
  •    
  • 我們希望獲取測試圖層的寬度, 使用attr方法獲取"元素特性"為undifined, 因為并沒有為div添加width. 而使用css()方法雖然可以獲取到style屬性的值, 但是在不同瀏覽器里返回的結(jié)果不同, IE6下返回auto, 而FF下雖然返回了正確的數(shù)值但是后面帶有"px". 所以jQuery提供了width()方法, 此方法返回的是正確的不帶px的數(shù)值.

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

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

    1.寬和高相關(guān) 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( )獲取第一個匹配元素內(nèi)部區(qū)域高度(包括補白、不包括邊框)。
    此方法對可見和隱藏元素均有效。
    見最后示例
    innerWidth( )獲取第一個匹配元素內(nèi)部區(qū)域?qū)挾龋òㄑa白、不包括邊框)。
    此方法對可見和隱藏元素均有效。
    見最后示例
    outerHeight( [margin] )獲取第一個匹配元素外部高度(默認包括補白和邊框)。
    此方法對可見和隱藏元素均有效。
    見最后示例
    outerWidth( [margin] )獲取第一個匹配元素外部寬度(默認包括補白和邊框)。
    此方法對可見和隱藏元素均有效
    見最后示例

    關(guān)于在獲取長寬的函數(shù)中, 要區(qū)別"inner", "outer"和height/width這三種函數(shù)的區(qū)別:

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

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

    2.位置相關(guān) Positioning

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

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

    名稱說明舉例
    offset( )獲取匹配元素在當前窗口的相對偏移。

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

    獲取第二段的偏移:
    var p = $("p:last");
    var offset = p.offset();
    p.html( "left: " + offset.left + ", top: " + offset.top );
    position( )獲取匹配元素相對父元素的偏移。

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

    獲取第一段的偏移:
    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 )傳遞參數(shù)值時,設置垂直滾動條頂部偏移為該值。

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

    設定垂直滾動條值:
    $("div.demo").scrollTop(300);
    scrollLeft( )獲取匹配元素相對滾動條左側(cè)的偏移。

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

    獲取第一段相對滾動條左側(cè)的偏移:
    var p = $("p:first");
    $("p:last").text( "scrollLeft:" + p.scrollLeft() );
    scrollLeft( val )傳遞參數(shù)值時,設置水平滾動條左側(cè)偏移為該值。

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

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

    原文鏈接:http://www.cnblogs.com/zhangziqiu/archive/2009/04/30/jQuery-Learn-4.html

    【編輯推薦】

    1. 從零開始學習jQuery之管理jQuery包裝集
    2. 從零開始學習jQuery之萬能的選擇器
    3. 從零開始學習jQuery之你必須知道的JavaScript
    4. jQuery從入門到精通
    5. 分享20款超好玩的jQuery游戲

    文章名稱:手把手教你使用jQuery操作元素的屬性與樣式
    文章起源:http://www.5511xx.com/article/coicedg.html