使用jQuery快速高效製作網頁交互特效——08 第八章 使用jQuery操作DOM

来源:https://www.cnblogs.com/HQING/archive/2018/08/10/9453409.html
-Advertisement-
Play Games

1、DOM操作: DOM操作分為三類: ●DOM Core:任何一種支持DOM的編程語言都可以使用它,如getElementById()、getElementsByName; ●HTML-DOM:用於處理HTML文檔,如document.forms; ●CSS-DOM:用於操作CSS(獲取和設置st ...


1、DOM操作:

DOM操作分為三類:

  DOM Core:任何一種支持DOM的編程語言都可以使用它,如getElementById()、getElementsByName;

  HTML-DOM:用於處理HTML文檔,如document.forms;

  CSS-DOM:用於操作CSS(獲取和設置style對象的各種屬性),如element.style.color="green";

JavaScript用於對(x)html文檔進行操作,它對這三類DOM操作都提供了支持;

2、 jQuery中的DOM操作:

在jQuery中的DOM操作主要可分為樣式操作、文本和value屬性值操作、節點操作;

節點操作又包含屬性操作、節點遍歷和CSS-DOM操作。

其中最核心的部分是節點操作和節點遍歷。

 

jQuery對JavaScript中的DOM操作進行了封裝

jQuery中的DOM操作:

      1、 樣式操作

  2、內容及Value值操作

  3、節點操作

  4、節點屬性操作

  5、節點遍歷

  6、CSS-DOM操作

◆設置和獲取樣式:

  ★使用css()為指定的元素設置樣式值或獲取樣式值;

       設置樣式的語法: $(selector).css(name,value);    //設置單個屬性值

                             $(selector).css({name:value,…..nameN:valueN});     //設置多個屬性值

                    Eg:$(this).css("border","5px solid #f5f5f5");

             或

           $(this).css({"border":"5px solid #f5f5f5","opacity":"0.5"});  // opacity設置透明度

獲取樣式的語法:$(selector).css(name);     //獲取屬性name的值

參數

說明

name

必須:規定CSS屬性的名稱。該參數可以是任何CSS屬性;eg:background等

value

必須:規定CSS屬性的值,該參數可以是任何CSS屬性值;eg:#000000、24px等;

 

◆追加和移除樣式:

     ★追加樣式:除了使用css()方法可以為元素添加樣式外,還能使用addClass()方法為元素追加類樣式;

    語法:

          $(selector).addClass(className);  //增加單個樣式

          $(selector).addClass(className1,className2…..);   //增加多個樣式

                  Eg

.text{ padding:10px;}

.content {background-color:#FFFF00; }

.border {border:1px dashed #333; }

$("h2").mouseover(function() {

$("p").addClass("content border");

});

 

 

★移除樣式:

  語法:

         $(selector).removeClass(className);     //移除單個樣式

         $(selector).removeClass(className1,className2….);    //移除多個樣式

       Eg

         $("h2").mouseout(function() {

               $("p").removeClass("text content");

    });

◆切換樣式:toggleClass():模擬了addClass()與removeClass()實現樣式切換的過程

    語法:    

      $(selector).toggleClass(className);//切換樣式

★其中,參數className為樣式的名稱,其功能是當元素中包含有名稱為className的CSS類樣式時,刪除該類樣式,否則增加一個該名稱的類樣式。(如果有則刪除,沒有則增加)。

             Eg

$("h2").click(function() {

    $("p").toggleClass("content  border");

});

 

 

★toggleClass()可以實現類樣式之間的切換、而css()方法或adaClass()方法僅是增加新的元素樣式,並不能實現切換的功能;

◆判斷是否含有指定的樣式:hasClass( )方法來判斷是否包含指定的樣式

    語法:

        $(selector).hasClass(className);    //參數className是類名,該名稱是必選的。返回值為布爾類型,如果有則為true

Eg1

  $("h2").mouseover(function() {

    if(!$("p").hasClass("content ")){

      $("p").addClass("content ");

      }

});

Eg2

$("h2").mouseout(function() {

      if($("p").hasClass("content ")) {

      $("p").removeClass("content ");

    }

});

 

3、內容操作:

HTML代碼操作

標簽內容操作

屬性值操作

HTML代碼操作:html()可以對HTML代碼進行操作,類似於JS中的innerHTML

        ◆新增頁面內容:html([content]);//其中content是可選項目,表示要添加的內容,該參數可以包含HTML標簽。無參數時,表示獲取被選元素的文本內容。

         ◆獲取頁面內容:html();

Eg:$("div.left").html();   //獲取元素中的html代碼

        $("div.left").html("<div class='content'>…</div>");    //設置元素中的html代碼

          

 

標簽內容操作:在jQuery中,可以使用text()方法獲取設置元素的文本內容,不含HTML 標簽

  ◆設置文本:text([content]);  //可選:規定被選元素的新聞本內容;特殊字元會被編碼;無參時,表示獲取備選元素的文本內容;

  ◆獲取文本:text();    //無參數時獲取第一個被選元素的文本

$("div.left").text();   //獲取元素中的文本內容

$("div.left").text("<div class='content'>…</div>");    //設置元素中的文本內容

                  

 

●html( ) 和text( )方法的區別:

語法格式

參數說明

功能描述

html( )

無參數

用於獲取第一個匹配元素的HTML內容或文本內容

html(content)

content為元素的HTML內容

用於設置所有匹配元素的HTML內容或文本內容

text( )

無參數

用於獲取所有匹配元素的文本內容

text (content)

content為元素的文本內容

用於設置所有匹配元素的文本內容

      註:text()方法即支持XML文檔,也支持(x)HTML文檔;

                        html()方法僅支持(x)HTML文檔,而不能用於xml文檔。

屬性值操作:val()可以獲取或設置元素的value屬性值;

    語法:

      val([value]);   //設置元素的屬性值,value規定被選元素的新內容,     //val();//無參數時,獲取第一個被選元素的value屬性的值

4、 節點與屬性操作:

 jQuery中節點操作:查找節點(前面章節已講)、創建節點、插入節點、刪除節點、替換節點、複製節點

查找節點:$(selector);

●創建節點元素:

  工廠函數$()用於獲取或創建節點:

    $(selector):通過選擇器獲取節點

    $(element):把DOM節點轉化成jQuery節點

    $(html):使用HTML字元串創建jQuery節點

      ★語法:

        $(selector)    // selector:選擇器,使用jQuery選擇器匹配元素;

          或

        $(element)   // element:DOM元素,以DOM元素來創建jQuery對象;

          或

        $(html)      //HTML代碼,使用HTML字元串創建jQuery對象;

               Eg

                     var $newNode=$("<li></li>");

             var $newNode1=$("<li>你喜歡哪些冬季運動項目?</li>");

             var $newNode2=$("<li title='last'>北京申辦冬奧會是再合適不過了!</li>");

●插入節點:

插入方式

方法

描述

 

內部插入

append(content)

向所選元素的內部插入內容;

append(B)表示將B追加到A中:如:$("ul").append($newNode1);

appendTo(content)

把所選擇的元素追加到另一個指定的元素集合中

$(A).appendTo(B)表示把A追加到B中          如:$newNode1.appendTo("ul");

prepend(content)

向每個選擇的元素內部前置內容

$(A). prepend (B)表示將B前置插入到A中       如:$("ul"). prepend ($newNode1);

prependTo(content)

將所有匹配元素前置到指定的元素中,該方法僅顛倒了常規prepend()插入元素的操作

$(A). prependTo (B)表示將A前置插入到B中     如:$newNode1. prependTo ("ul");

 

外部插入

after(content)

在每個匹配的元素之後插入內容

$(A).after (B)表示將B插入到A之後              如:$("ul").after($newNode1);

insertAfter(content)

將所有匹配元素插入指定元素的後面,該方法僅顛倒了常規after()插入元素的操作

$(A). insertAfter (B)表示將A插入到B之後        如:$newNode1.insertAfter("ul");

before(content)

像所選擇的元素外部前面插入內容

$(A). before (B)表示將B插入至A之前            如:$("ul").before($newNode1);

insertBefore(content)

將所匹配的元素插入指定元素的前面,該方法僅是顛倒了常規before()插入元素的操作;

$(A). insertBefore (B)表示將A插入到B之前        如:$newNode1.insertBefore("ul");

 

●刪除節點:jQuery提供了三種刪除節點的方法:

  ★remove():刪除整個節點,該方法用於刪除匹配元素,刪除的內容包括匹配元素包含的文本和子節點;

      語法:$(selector).remove([expr]);      //參數expr可選,如果接收參數,則該參數為篩選元素的jQuery表達式,通過表達式獲取指定元素,併進行刪除;

  ★empty():清空節點內容,該方法並不是刪除節點,而是清空節點,他能清空元素中的所有後代節點;

      語法:$(selector).empty();

  ★detach():刪除整個節點,保留元素的綁定事件、附加的數據

remove()方法和detach()方法都能將匹配的元素從DOM文檔中刪除,兩者的相同之處是,都能將匹配的元素從DOM中刪除,而且刪除後該元素在jQuery對象中依然存在;

  eg:下麵的代碼雖然將id為name的元素在頁面中不存在了,但是$name對象中仍然包含這個元素;

          var $name=$(“#name”).remove()

兩者不同的地方在於detach()可以在刪除元素後,在jQuery對象中保留元素的綁定事件、附加的數據。

例如,在上述代碼中,如果在刪除前,id為name的元素已經綁定了click事件,在刪除後,$name包含的元素仍然綁定著該事件,而remove方法沒有這種作用;

 

●替換節點:replaceWith()和replaceAll()用於替換某個節點;兩者的關係類似於append()和appendTo();

           作用是將所有匹配的元素都替換成指定的HTML或者DOM元素;

    Eg:var $newNode1=$("<li>你喜歡哪些冬季運動項目?</li>");

      $(".gameList li:eq(2)").replaceWith($newNode1);

        或

      $($newNode1).replaceAll(".gameList li:eq(2)");

 

●複製節點:clone()用於複製某個節點:該方法能夠生成被選元素的副本,包含子節點、文本和屬性;

  語法:$(selector).clone([includeEvents]);     //其中參數includeEvents為可選值,為布爾值true或false。表示是否複製元素的所有處理事件,為true時複製事件,為false時不複製事件。

$(".gameList li:eq(1)").click(function(){

     $(this).clone(true).appendTo(".gameList");

    })

$(".gameList li:eq(2)").click(function(){

     $(this).clone(false).appendTo(".gameList");

    })

 

 

5、 屬性操作:

●屬性操作:attr()用來獲取與設置元素屬性;

  語法:

    $(selector).attr([name]);     //獲取屬性值

    或

    $(selector).attr({[name1:value1],[name2:value2]…[nameN:valueN]});    //設置多個屬性值

      eg:設置圖片的寬高屬性

         $(“.contain  img”).attr({width:”200”,height:”80”});

★在jQuery中,很多方法都是同一個方法實現獲取與設置兩種功能的,即一個方法實現兩個用途、無參數時為獲取元素,帶參數時,為設置元素的文本、屬性值等,attr()方法、html()方法、val()方法等;

●刪除元素屬性:

  語法:

    $(selector).removeAttr(name);     //參數為元素屬性的名稱。

      Eg1:刪除圖片的寬度屬性:

        $(“contain  img”).removeAttr(“width”);

              Eg2:刪除元素的alt屬性:

                    $(".contain img").removeAttr("alt");

6、 節點的遍歷:遍歷子元素、遍歷同輩元素、遍歷前輩元素、其他遍歷方法;

●遍歷子元素:children()方法可以用來獲取元素的所有子元素;

語法:

$(selector).children([expr]);    //參數expr為可選,用於過濾子元素的表達式。

     Eg:獲取<section>的子元素,但不包含子元素的子元素;

            

●遍歷同輩元素:jQuery可以獲取緊鄰其後、緊鄰其前和位於該元素前與後的所有同輩元素;

方法

描述

next([expr])

用於獲取緊鄰匹配元素之後的元素,expr參數可選,用於過濾同輩元素的表達式:

如:$("li:eq(1)").next().css("background-color","#F06");

prev([expr])

用於獲取緊鄰匹配元素之前的元素,expr參數可選,用於過濾同輩元素的表達式:

如:$("li:eq(1)").prev().css("background-color","#F06");

slibings([expr])

用於獲取位於匹配元素前面和後面的所有同輩元素,expr參數可選,用於過濾同輩元素的表達式:

如:$("li:eq(1)").siblings().css("background-color","#F06");

 

●遍歷前輩元素:

     jQuery中可以遍歷前輩元素

    parent():獲取元素的父級元素

        語法:$(selector). parent([selector]);

    parents():元素元素的祖先元素

             語法:$(selector). parents([selector]);

              eg

              $("li:eq(1)").parent().addClass("orange");

              $("li:eq(1)").parents().addClass("orange");

▲兩者的參數均是可選的,表示被匹配元素的選擇器表達式,

參數

描述

示例

parent([selector]);

參數可選,獲取當前匹配元素集合中的每個元素的父級元素

$(“hot”). parent();// 獲取到的是<span>的直接上層<li>元素

$(“hot”). parent(). parent();//獲取上上層<li>元素

$(“hot”). parent(). parent().remove();//將刪除當前<ul>列表

parents([selector]);

參數可選,獲取當前匹配元素集合中的每個元素的祖先元素

$(“hot”). parents();從當前匹配元素的直接父節點開始查找,查找範圍為其父節點和祖先節點,獲取到的節點依次為:<li>、<ul>、<section>、<body>和<html>

 

●其他遍歷方法:jQuery中還有很多其他的遍歷方法,如each()、end()、find()、filter()、eq()、first()、last()等。

  ◆each()方法:規定為每個匹配元素規定運行的函數

    語法:

      $(selector).each(function(index,element));   //其中,參數index表示選擇器的index位置,element表示當前的元素,當返回值為false時可用於及早停止迴圈。

$("img").click(function(){

       $("li").each(function(){

           var str=$(this).text()+"<br>";

           $("section").append(str);

       })

   });

 

 

  ◆end()方法:方法結束當前鏈條中最近的篩選操作,並將匹配元素集還原為之前的狀態。

    語法:.end();

eg

 

 

 

7、CSS-DOM操作:

方法

描述

示例

css()

設置或返回匹配元素的樣式屬性

$(“#box”).css(“background-color”,”green”);

height([value])

參數可選,設置或返回匹配元素的高度,如果沒有規定長度的單位,則預設px做單位;

$(“#box”).height(180)

width([value])

參數可選,設置或返回匹配元素的寬度,如果沒有規定長度的單位,則預設px做單位;

$(“#box”).width(180)

offset([value])

返回以像素為單位的top和left坐標。此方法僅對可見元素有效

$(“#box”).offset()

offsetParent()

返回最近的已定位祖先元素。定位元素指元素的CSS position屬性值被設置為relative,absolute或fixed的元素

$(“#box”). offsetParent()

position()

返回第一個匹配元素相對於父元素的位置

$(“#box”). position()

scrollLeft([position])

參數可選,設置或返回匹配元素相對滾動條左側的偏移

$(“#box”). scrollLeft(20)

scrollTop([position])

參數可選,設置或返回匹配元素相對滾動條頂部的偏移

$(“#box”). scrollTop(180)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Web Worker讓JS有了多線程的能力,可以將複雜耗時的操作都交付給Worker線程處理。WebSocket讓web端與服務端維持一個有效的長連接,實現服務端主動推送數據。將二者一結合,業務系統信息流轉通知功能完全就可以剝離出來。 架構圖 JS Worker Worker工作在一個專用的作用域D ...
  • ie9中ajax請求一般處理程式成功後返回值始終是undefined,在網上找過很多資料,大致意思都是說前後端編碼不一致造成的,但是按照資料上的方案去修改卻發現根本不能解決我的問題,試過好多種方案都不行,最後沒辦法只能自己一點點的摸索找原因,最後發現必須要在後臺指定的地方去設置編碼方式才有效,至於前 ...
  • 何為滾動視差 視差滾動(Parallax Scrolling)是指讓多層背景以不同的速度移動,形成立體的運動效果,帶來非常出色的視覺體驗。 作為網頁設計的熱點趨勢,越來越多的網站應用了這項技術。 通常而言,滾動視差在前端需要輔助 Javascript 才能實現。當然,其實 CSS 在實現滾動視差效果 ...
  • 一、使用文檔自帶的原生API rich-text, nodes屬性直接綁定需要渲染的html內容即可,文檔參見這裡:https://developers.weixin.qq.com/miniprogram/dev/component/rich-text.html 二、使用WxParseData插件, ...
  • 如何實現進度條效果呢 ? 效果:點擊頁面的某個按鈕,彈出一個進度條,然後實時顯示進度,直到任務完成。 思路:頁面裡面有個隱藏的進度條,點擊按鈕後彈出。ajax迴圈請求數據,直到全部完成 難點:ajax的同步請求問題 1、首先引入頁面樣式: 2、頁面 進度條 HTML 元素 3、JS 實現 定義全局的 ...
  • 規則就是,調用函數,放兩個參數,第一個參數,是設計稿的寬度,第二個參數是px與rem的轉換比例,通常會寫100(因為好算);當然了,要把這段js代碼最好封裝在一個單獨的js文件里,並且放在所有的css文件引入之前載入。 其中 var n=t.clientWidth||320;n>720&&(n=72 ...
  • 初學前端js經常搞不清楚null與undefined的區別,他們是js中的原始數據類型 1、undefined數據類型只有一個值undefined,當聲明的變數未初始化時,變數的預設值是undefined. 2、null也只有一個值null,用來表示尚未存在的對象,常用來表示函數企圖返回一個不存在的 ...
  • obj =["34", "3", "34#add"] 數組,id 與樹形的所有id 一致 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...