<thead id="kdfuf"><font id="kdfuf"></font></thead>
<samp id="kdfuf"></samp>
    <nav id="kdfuf"><strong id="kdfuf"></strong></nav>
      中文字幕无码一区二区三区在线,久久精品人人做人人爽,国产一级内射无挡观看,十八禁在线黄色网站,日韩欧美国产另类久久久精品 ,少妇人妻偷人精品一区二区,久久午夜视频,亚洲春色AⅤ无码专区

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

      轉(zhuǎn)載藍(lán)藍(lán)設(shè)計(   www.tuitetiyu.cn  )是一家專注而深入的設(shè)計機構(gòu) ,為期望卓越的國內(nèi)外企業(yè)提供有效的   BS界面設(shè)計 、 cs界面設(shè)計 、  ipad界面設(shè)計   、  包裝設(shè)計 、  圖標(biāo)定制 、  用戶體驗 、交互設(shè)計、   網(wǎng)站建設(shè) 平面設(shè)計服務(wù)

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

      如果您想訂閱本博客內(nèi)容,每天自動發(fā)到您的郵箱中,   請點這里

      一.摘要

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

       

      二.前言

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

       

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

      一個img標(biāo)簽:

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


       

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

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

      牢記, 在javascript中我們可以直接獲取或設(shè)置"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>


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

      img1.className = "classB";


      四. 操作"DOM屬性"

      在jQuery中沒有包裝操作"DOM屬性"的函數(shù), 因為使用javascript獲取和設(shè)置"DOM屬性"都很簡單. 在jQuery提供了each()函數(shù)用于遍歷jQuery包裝集, 其中的this指針是一個DOM對象, 所以我們可以應(yīng)用這一點配合原生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函數(shù)的說明:

      each( callback )  Returns: jQuery包裝集

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

       

      五. 操作"元素屬性"

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

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

      名稱 說明 舉例

      attr( name )

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

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

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

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

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

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

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

       

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

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


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

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


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

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


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

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

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

       

      六,修改CSS樣式

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

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

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

      1. 修改CSS類

      下表是修改CSS類相關(guān)的jQuery方法:

      名稱 說明 實例

      addClass( classes )

      為每個匹配的元素添加指定的類名。 為匹配的元素加上 'selected' 類: 
      $("p").addClass("selected");
      hasClass( class ) 判斷包裝集中是否至少有一個元素應(yīng)用了指定的CSS類
      $("p").hasClass("selected");
      removeClass( [classes] ) 從所有匹配的元素中刪除全部或者指定的類。 從匹配的元素中刪除 'selected' 類: 
      $("p").removeClass("selected");
      toggleClass( class ) 如果存在(不存在)就刪除(添加)一個類。 為匹配的元素切換 'selected' 類: 
      $("p").toggleClass("selected");
      toggleClass( class, switch ) 當(dāng)switch是true時添加類, 
      當(dāng)switch是false時刪除類

      每三次點擊切換高亮樣式: 
      var count = 0; 
      $("p").click(function(){ 
        $(this).toggleClass("highlight", count++ % 3 == 0); 
      });

       

      使用上面的方法, 我們可以將元素的CSS類像集合一樣修改, 再也不必手工解析字符串.

      注意  addClass( class ) removeClass( [classes] ) 的參數(shù)可以一次傳入多個css類, 用空格分割,比如:

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


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

       $("p").removeClass()

       

      2. 修改CSS樣式

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

      名稱 說明 實例
      css( name ) 訪問第一個匹配元素的樣式屬性。 取得第一個段落的color樣式屬性的值: 

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

      css( properties )

      把一個“名/值對”對象設(shè)置為所有匹配元素的樣式屬性。

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

      將所有段落的字體顏色設(shè)為紅色并且背景為藍(lán)色: 
      $("p").css({ color: "#ff0011", background: "blue" }); 

      css( name, value )

      在所有匹配的元素中,設(shè)置一個樣式屬性的值。

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

      將所有段落字體設(shè)為紅色: 

      $("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()); //正確的數(shù)值1264             alert("style.width:" +  $("#testDiv")[0].style.width ); //空值         })
          </script> </head> <body>     <div id="testDiv">         測試文本</div> </body> </html>


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

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

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

      1.寬和高相關(guān) Height and Width

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

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

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

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

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

      將所有段落的寬設(shè)為 20: 

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

      innerHeight( )

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

      見最后示例
      innerWidth( )

      獲取第一個匹配元素內(nèi)部區(qū)域?qū)挾龋òㄑa白、不包括邊框)。 
      此方法對可見和隱藏元素均有效。

      見最后示例
      outerHeight( [margin] )

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

      見最后示例
      outerWidth( [margin] )

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

      見最后示例

       

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

      image

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

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

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

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

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

      名稱 說明 舉例
      offset( )

      獲取匹配元素在當(dāng)前窗口的相對偏移。

      返回的對象包含兩個整形屬性: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ù)值時,設(shè)置垂直滾動條頂部偏移為該值。

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

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

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

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

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

      傳遞參數(shù)值時,設(shè)置水平滾動條左側(cè)偏移為該值。

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

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

       

      八.總結(jié)

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

       

       

      出品公司:

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

      日歷

      鏈接

      個人資料

      藍(lán)藍(lán)設(shè)計的小編 http://www.tuitetiyu.cn

      存檔

      主站蜘蛛池模板: 中文字幕午夜乱理片| yy9299国产精品| 中文字幕人妻不卡久久| 国产免费一级黄片| 狠狠色婷婷久久一区二区三区 | 国产精品视频熟女韵味 | 寂寞的少妇2乱理片| 亚洲精品国产成人片在线观看| 中文字幕隔壁人妻欲求不满| 美女裸身正面无遮挡全身视频| 少妇私密擦油喷水高潮爽翻天| 无码国产成人午夜电影在线观看| 日韩精品无码专区免费播放 | 国产精品久久久久不卡绿巨人| 美女粉嫩极品国产在线2020| 午夜内射中出视频| 达日县| 亚洲另类国产欧美一区二区| 三上悠亚人妻中文字幕在线| 在线播放国产不卡免费视频| 亚洲欧美日韩国产一区在线| 最新国产成人精品2021| 亚洲爽爆av一区二区| 国产精品沙发午睡系列990531| 国产亚洲欧美日韩一区抖音| 亚洲AV日韩专区| 精品久久伊人99热超碰| 国产色婷婷五月精品综合在线 | 产精品一区在线观看你懂的| 国产精品va在线观看无码不卡| 2021无码精品不卡视频| 欧美精品久久久久A片一二三区| 性色AⅤ无码久久久久久精品| 国产精品久久蜜臀av| 日本边摸边吃奶边做视频叫床 | 激情97综合亚洲色婷婷五| 百度搜索-国产又粗又猛又爽又黄的视频| 国产未成满18禁止免费| 国产美女销魂在线观看不卡| 无线乱码一二三区免费看| 欧美日韩在线播一区二区三区|