【jQuery基礎學習】02 jQuery的DOM操作

来源:http://www.cnblogs.com/vvjiang/archive/2016/01/27/5161958.html
-Advertisement-
Play Games

DOM操作分為3個方面:DOM Core 任何一種支持DOM Core的語言都可以使用它,比如getElementById就是DOM Core操作HTML-DOM 只能用來處理web文檔CSS-DOM 針對CSS的操作關於jQuery中的DOM操作查找節點可以很輕易通過就jQuery選擇器來找到.....


DOM操作分為3個方面:

  1. DOM Core    任何一種支持DOM Core的語言都可以使用它,比如getElementById就是DOM Core操作
  2. HTML-DOM  只能用來處理web文檔
  3. CSS-DOM    針對CSS的操作 

關於jQuery中的DOM操作

查找節點可以很輕易通過就jQuery選擇器來找到,這裡略過。

創建節點

var $myli= $('<li title="troy">troy123</li>');//創建jQuery對象
$("ul").append($myli);//將創建的DOM元素添加到ul中

插入節點

  • append()          向每個匹配的元素內部追加內容(上面已有示例)
  • appendTo()       將所匹配的元素追加到指定的元素中
    $myli.appendTo("ul");//改編自創建節點中的代碼,效果一樣
  • prepend()         向每個匹配的元素內部前置內容(與append相反,append是加在元素裡子元素的後面)

  • prependTo()      將所匹配的元素追加到指定的元素中
  • after()              在每個匹配的元素之後插入內容,其實就是$("#liId").after($myli)的意思
  • insertAfter()      將所匹配的元素追加到指定的元素後面,同理,只不過不知道為什麼沒有寫成afterTo,這樣同一起來其實好理解一點
  • before()            在每個匹配的元素之前插入內容,其實就是$("#liId").before($myli)的意思
  • insertBefore()    將所匹配的元素追加到指定的元素前面,同理
    var $one_li=$("ul li:eq(1)");
    var $two_li=$("ul li:eq(2)");
    $two_li.insertBefore($one_li);//這樣就實現了兩個節點互換

刪除節點

  • remove()   當某個節點調用remove方法後,該節點及其後代節點都會被刪除。該方法的返回值是一個只想該被刪除節點的引用。
    var $li= $("ul li:eq(0)").remove();
    $li.prependTo("ul");//結果沒變化
    
    $("ul li").remove("li[title=troy]");//選擇性刪除
  • detach()   和remove效果一樣。但是用這個刪除再像上面的例子那樣插入的話,你會發現綁定在元素節點上的事件和附加的數據都還在,而remove的就不行。detach翻譯為英文為拆分,似乎可以說明這就是為了先拿出來再插入的。
  • empty()   清空節點的所有後代節點

複製節點

  clone()方法進行複製節點,如果傳參clone(true)就表示連節點的事件都會複製。

替換節點

     我們當然可以先刪後增來達到替換的效果,當然也有更簡單的方法,那就是用replaceWith()和repalceAll();

包裹節點

$("strong").wrap("<b></b>");//每一個被匹配的<strong>元素都將被<b>包裹起來
$("strong").wrapAll("<b></b>");//所有被匹配到的<strong>元素被同一個<b>包裹起來
$("strong").wrapInner("<b></b>");//每一個被匹配到的<strong>元素的所有子元素都被一個<b>包裹起來

關於jQuery中的屬性操作

var $myDiv=$("div");
var text=$myDiv.attr("title");//獲取屬性
$myDiv.attr("title","Troy123");//設置單個屬性
$myDiv.attr({title:"Troy123",name:"Troy"});//設置單個屬性
$myDiv.removeAttr("title");//刪除屬性

關於jQuery中的樣式操作

  • attr("class")                       樣式的獲取和設置,$myDiv.attr("class")$myDiv.attr("class","myClass")即可。
  • addClass("myClass")          追加樣式。如果在不同的class中設置同一樣式,那麼後者覆蓋前者。也就是說,此函數追加的樣式中某一樣式屬性,如果在前面已經被某樣式決定了,那麼新的這個會覆蓋舊的。
  • removeClass("myClass")     僅僅只刪除myClass樣式。而如果不要參數,直接$myDiv.removeClass(),那麼將刪除所有樣式。
  • toggleClass("myClass")       當點擊div時增加樣式myclass,當再點擊一次則移除,反覆如此。
  • hasClass("myClass")           如果含有則返回true,如果沒有則返回false。實際上在內部是用了$myDiv.is(".myClass")操作來實現。

設置和獲取HTML、文本和值

  • html()        設置和獲取某節點的html,玩法和attr()一樣
  • text()         設置和獲取某節點的文本內容,玩法同上
  • val()           設置和獲取某節點的value屬性,而val方法還能使select,checkbox和radio相應的選項被選中。
    $("#mySelect").val("選項2");//選中選項2
    $("#mulSelect").val(["選項2","選項3"]);//選中選項2,選項3
    $(":checkBox").val(["check2","check3"]);//選中value為check2和check3的多選框
    $(":radio").val(["radio1"]);//選中value為radio1的單選框
    //下麵用attr方法實現
    $("#mySelect option:eq(1)").attr("selected",true);
    $("[value=radio2]:radio").attr("checked",true);

遍歷節點

  • children()       該方法取得匹配元素的子元素集合,只取得子元素,不考慮後代元素
  • next()            取得匹配元素後面緊鄰的同輩元素
  • prev()            取得匹配元素前面緊鄰的同輩元素
  • siblings()       取得匹配元素前後所有的同輩元素
  • closest()        取得最近的匹配元素。先檢查該元素是否匹配,不匹配就向上查父元素,有就返回匹配元素,無就返回空的jQuery對象
  • parent()        獲取集合中每個匹配元素的父元素
  • parents()       獲取集合中每個匹配元素的祖先元素,還可以加匹配參數
    $("#mydiv").parent();
    $("#mydiv").parents("div");
    $("#mydiv").closest("div");

CSS-DOM操作

css()方法無論是color屬性,還是外部CSS導入,還是拼接在HTML的元素里,css方法都可以獲取到屬性style里的其他屬性的值。

$("#mydiv").css("height");//獲取樣式高度值,可能為auto之類的
$("#mydiv").height();//獲取真實高度值,必定為數值px

關於元素定位

  • offset()                             獲取元素在當前視窗的相對偏移,其中返回的對象有兩個屬性:top和left。它只對可見元素有效。
    var myOffset=$("#mydiv").offset();
    var left=myOffset.left;
    var top=myOffset.top;
  • position()                          獲取元素相對於最近的一個Position樣式屬性設置為relative或者absolute的祖先節點的相對偏移,也返回top和left。用法同上。
  • scrollTop()和scrollLeft()       獲取和設置滾動條滑塊距頂端和左側的距離。
    $("#myTextArea").scrollTop();//獲取距離
    $("#myTextArea").scrollTop(300);//設置距離

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

-Advertisement-
Play Games
更多相關文章
  • 聖杯佈局,很久之前就聽過,但是從來都沒深入瞭解過,最近因為做了一個項目,借鑒了薪人薪事這個公司的產品頁面,才第一次用到這種佈局方式。於是就花了點時間,測了下它所有分欄佈局的代碼,每段代碼都非常簡單,但佈局效果很完美,比我以前用的方式好用不少。本文是對它實現方式的一些總結,希望可以把這種技術推薦給跟我...
  • 定義日誌輸出函數(function(){ if(window['console']){ return; } window['console'] = { log: function(){} ,clear: function(){} ,debug: function(){} ,error: ...
  • 今天聊聊一個經典的佈局實例:實現一個三列佈局,其中左側和右側的部分寬度固定,中間部分寬度隨瀏覽器寬度的變化而自適應變化可能很多朋友已經笑了,這玩意兒通過雙飛翼佈局就能輕鬆實現。不過,還請容我在雙飛翼之外,循序漸進地介紹一下我們可以如何實現一個三列佈局。1. 首先,使用浮動佈局來實現一下See ...
  • var val=$('input:radio[name="sex"]:checked').val();附三種方法都可以:$('input:radio:checked').val(); $("input[type='radio']:checked").val();$("input[name='rd.....
  • 適合EXT keycode的查詢A 65B 66C 67D 68E 69F 70G 71H 72I 73J 74K 75L 76M 77N 78O 79P 80Q 81R 82S 83T 84U 85V 86W 87X 88Y 89Z 900 4...
  • 設置全站的字體一直是一個簡單而又不簡單的事,因為深入下去,這裡面牽扯到太多的東西。本文主要是想說說對於一個普通的網站,如何根據自己的需求選擇字體。1、必備知識首先,我們應該明確,並不是你設置了這種字體,用戶電腦便會以這種字體顯示。如果用戶電腦沒有安裝這種字體,那麼它便會以你設置的第二種字體來渲染。看...
  • 語義化這個詞我想大家都看到了無數次,特別是在一些招聘廣告上。其實我自己也是,不過每次看到都覺得是那些招聘公司複製的,其實他們根本說不清語義化是什麼,而且也根本不看重。所以我一直也沒把這東西當回事過。然而最近當我再次看到這個詞時,我想我應該好好思考下這問題了。就寫篇博客記錄下。一、什麼是語義化?在解釋...
  • 效果:http://hovertree.com/texiao/css3/1/本效果主要使用text-shadow實現.參考:http://hovertree.com/h/bjaf/css3_text_effect.htm代碼如下:超炫CSS3文字特效集錦DEMO演示 - 何問起OutlinedAOu...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...