成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

jQuery入門筆記之(二)文檔對象模型

FleyX / 2790人閱讀

摘要:刪除指定的屬性,這個方法就不可以使用匿名函數(shù),傳遞和均無效。遍歷對象數(shù)組索引,鍵,屬性名屬性值,值相當于遍歷原生對象數(shù)組時,為元素。在使用使用時,可以使用傳入匿名函數(shù)的方法,實現(xiàn)由默認到幾個之間的切換。

轉(zhuǎn)自個人博客

基礎 DOM 和 和 CSS 一. 設置元素及內(nèi)容

我們通過前面所學習的各種選擇器、過濾器來得到我們想要操作的元素。這個時候,我們就可以對這些元素進行 DOM 的操作。
那么,最常用的操作就是對元素內(nèi)容的獲取和修改。html()text()方法:

方法名 描述 區(qū)分
html() 獲取元素中 HTML 內(nèi)容 連同標簽一起提取
html(value) 設置元素中 HTML 內(nèi)容 清空原數(shù)據(jù),設置html內(nèi)容
text() 獲取元素中文本內(nèi)容 自動清理html標簽
text(value) 設置元素中文本內(nèi)容 自動轉(zhuǎn)義html標簽以文本形式呈現(xiàn)
val() 獲取表單中的文本內(nèi)容 value屬性的值
val(value) 設置表單中的文本內(nèi)容 設置value的值(有特殊用法)

注意:當我們使用 html()text()設置元素里的內(nèi)容時,會清空原來的數(shù)據(jù)。而我們期望能夠追加數(shù)據(jù)的話,需要先獲取原本的數(shù)據(jù)。

$("#box").html($("#box").html() + "guowenfh.github.io"); //追加數(shù)據(jù)
//當然它還支持使用函數(shù)來進行更復雜的追加

val()的特殊用法:
如果想設置多個選項的選定狀態(tài),比如下拉列表、單選復選框等等,可以通過數(shù)組傳遞操作。

$("input").val(["check1","check2", "radio1"]); //value 值是這些的將被選定
二. 元素屬性操作

除了對元素內(nèi)容進行設置和獲取,通過jQuery也可以對元素本身的屬性進行操作,包括獲取屬性的屬性值、設置屬性的屬性值,并且可以刪除掉屬性。
attr()removeAttr()

方法名 描述
attr(key) 獲取某個元素 key 屬性的屬性值
attr(key, value) 設置某個元素 key 屬性的屬性值
attr({key1:value2, key2:value2...}) 設置某個元素多個 key 屬性的屬性值
attr(key, function (index, value){}) 通過 fn 來設置設置某個元素 key屬性

注意:

jQuery中很多方法都可以使用 function() {}來返回出字符串,比如 html()、text()、val()和上一章剛學過的 is()filter()方法。
這些方法里的function() {},可以不傳參數(shù)??梢灾粋饕粋€參數(shù) index,表示當前元素的索引(從0開始)。也可以傳遞兩個參數(shù) indexvalue,第二個參數(shù)表示屬性原本的值。

(當然并不是所有方法都適合,有興趣可以自己逐個嘗試)。

刪除指定的屬性,這個方法就不可以使用匿名函數(shù),傳遞indexvalue均無效。$("div").removeAttr("title"); //刪除指定的屬性

當然因為idclass也是元素的屬性,自然也可以使用attr進行設置,但是建議不這樣使用,因為會導致整個頁面結(jié)構(gòu)的混亂,有專門的屬性對它們進行設置。

三. 元素樣式操作

元素樣式操作包括了直接設置 CSS 樣式、增加 CSS 類別、類別切換、刪除類別這幾種操作方法。使用頻率極高!

方法名 描述
css(name) 獲取某個元素行內(nèi)的 CSS 樣式
css([name1, name2, name3]) 獲取某個元素行內(nèi)多個 CSS 樣式
css(name, value) 設置某個元素行內(nèi)的 CSS 樣式
css(name, function (index, value) ) 設置某個元素行內(nèi)的 CSS 樣式
css({name1 : value1, name2 : value2}) 設置某個元素行內(nèi)多個 CSS 樣式,鍵值對
addClass(class) 給某個元素添加一個 CSS 類
addClass(class1 class2 class3...) 給某個元素添加多個 CSS 類
removeClass(class) 刪除某個元素的一個 CSS 類
removeClass(class1 class2 class3...) 刪除某個元素的多個 CSS 類
toggleClass(class) 來回切換默認樣式和指定樣式
toggleClass(class1 class2 class3...) 同上
toggleClass(class, switch) 來回切換樣式的時候設置切換頻率
toggleClass(function () {}) 通過匿名函數(shù)設置切換的規(guī)則
toggleClass(function () {}, switch) 在匿名函數(shù)設置時也可以設置頻率
toggleClass(function (i, c, s) {}, switch) 在匿名函數(shù)設置時傳遞三個參數(shù)

理解:

在獲取多個 CSS 樣式時,獲取到的是一個對象數(shù)組,如果用原生JS進行解析需要使用for in遍歷。

var box = $("div").css(["color", "height", "width"]); //得到多個 CSS 樣式的數(shù)組對象
for (var i in box) { //逐個遍歷出來
    alert(i + ":" + box[i]);
}

在jQuery顯然不需要那么麻煩,因為它提供了一個遍歷工具專門來處理這種對象數(shù)組,$.each()方法,這個方法可以輕松的遍歷對象數(shù)組。

/**
 * 遍歷對象數(shù)組
 * @param  {String} index 索引,鍵,屬性名
 * @param  {String} value  屬性值,值(相當于arr[i])
 */
//遍歷原生JS對象數(shù)組時,value為元素DOM。
$.each(box, function(index, value) {
    alert(index+":"+value);//效果和上面的一樣
});

如果想設置某個元素的 CSS 樣式的值,但這個值需要計算我們可以傳遞一個匿名函數(shù)。

$("div").css("width", function (index, value) {
return (parseInt(value) - 50) + "px";//局部操作,不影響全局,避免沖突。
});

在使用.toggleClass()使用時,可以使用傳入匿名函數(shù)的方法,實現(xiàn)由默認到幾個class之間的切換。例如:

//注意這里必須要先刪除原有的樣式,不然只是被覆蓋了,而不是替換。
$("div").click(function() {
    $(this).toggleClass(function() {
        if ($(this).hasClass("red")) {
            $(this).removeClass("red");
            return "blue";
        } else {
            $(this).removeClass("blue");
            return "red";
        }
    });
});

對于.toggleClass()傳入匿名函數(shù)的方法,還可以可以傳遞 index索引、class類兩個參數(shù)以及頻率布爾值,可以得到當前的索引、class類名和頻率布爾值。

四. CSS方法 (一)width()方法
方法名 描述
width() 獲取某個元素的寬度(number)
width(value) 設置某個元素的寬度(無單位時,默認px)
width(function (index, width) {}) 通過匿名函數(shù)設置某個元素的寬度

雖然可以不加單位,但是建議加上,使代碼更加清晰。
index 是索引,value 是原本值。

(二)height()方法
方法名 描述
height() 獲取某個元素的高度
height(value) 設置某個元素的高度
height(function (index, height) {}) 通過匿名函數(shù)設置某個元素的高度

上述兩個方法不包括內(nèi)外邊距和邊框

(三)內(nèi)外邊距和邊框尺寸方法
方法名 描述
innerWidth() 獲取元素寬度,包含內(nèi)邊距 padding
innerHeight() 獲取元素高度,包含內(nèi)邊距 padding
outerWidth() 獲取元素寬度,包含邊框 border 和內(nèi)邊距 padding
outerHeight() 獲取元素高度,包含邊框 border 和內(nèi)邊距 padding
outerWidth(ture) 同上,且包含外邊距(注意里面的true)
outerHeight(true) 同上,且包含外邊距
(四)元素偏移方法
方法名 描述
offset() 獲取某個元素相對于視口的偏移位置(無論定位與否)
position() 獲取某個元素相對于父元素的偏移位置
scrollTop() 獲取垂直滾動條的位置
scrollTop(value) 設置垂直滾動條的位置
scrollLeft() 獲取水平滾動條的值
scrollLeft(value) 設置水平滾動條的值

注意:
前兩個方法,獲取得到的是一個對象,如:{left:12,top:32},所以需要獲取其中的一個值的時候,還需要進行選取,例如:$(div).offset.left。獲取相對與視口的偏移。

在獲取滾動條的值時需要注意的是,對象為window且需要用$包裝轉(zhuǎn)化成jQ對象

$(window).scrollTop(); //獲取當前滾動條的位置
$(window).scrollTop(300); //設置當前滾動條的位置
DOM 節(jié)點操作

DOM中有一個非常重要的功能,就是節(jié)點模型,也就是DOM中的“M”。頁面中的元素結(jié)構(gòu)就是通過這種節(jié)點模型來互相對應著的,我們只需要通過這些節(jié)點關(guān)系,可以創(chuàng)建、插入、替換、克隆、刪除等等一些列的元素操作。

一. 創(chuàng)建節(jié)點

為了使頁面更加智能化,有時我們想動態(tài)的在 html 結(jié)構(gòu)頁面添加一個元素標簽,那么在插入之前首先要做的動作就是:創(chuàng)建節(jié)點。
在jQuery中創(chuàng)建節(jié)點異常簡單。

var box = $("
節(jié)點
"); //創(chuàng)建一個節(jié)點 $("body").append(box); //將節(jié)點插入到元素內(nèi)部
二. 插入節(jié)點

在創(chuàng)建節(jié)點的過程中,其實我們已經(jīng)演示怎么通過.append()方法來插入一個節(jié)點。但僅僅這個功能遠遠不能滿足我們的需求,除了這個方法,jQuery提供了其他幾個方法來插入節(jié)點。

內(nèi)部插入節(jié)點方法
方法名 描述
append(content) 向指定元素內(nèi)部后面插入節(jié)點content
append(function (index, html) {}) 使用匿名函數(shù)向指定元素內(nèi)部后面插入節(jié)點
appendTo(content) 將指定元素移入到指定元素content 內(nèi)部后面
prepend(content) 向指定元素content 內(nèi)部的前面插入節(jié)點
prepend(function (index, html) {}) 使用匿名函數(shù)向指定元素內(nèi)部的前面插入節(jié)點
prependTo(content) 將指定元素移入到指定元素 content 內(nèi)部前面

需要注意的是appendTo(content)prependTo(content)在使用方法上與其他兩個略微有些不同,$("new").appendTo("div");,它代表的是創(chuàng)建的節(jié)點傳入div內(nèi)部。

匿名函數(shù)方式:

$("div").append(function (index, html) {
 //使用匿名函數(shù)插入節(jié)點index是獲取到的div的索引,html 是原節(jié)點
    if(index==1){
        return "節(jié)點";//在獲取到的第二個div內(nèi)部添加節(jié)點
    }
});
外部插入節(jié)點方法
方法名 描述
after(content) 向指定元素的外部后面插入節(jié)點 content
after(function (index, html) {}) 使用匿名函數(shù)向指定元素的外部后面插入節(jié)點
before(content) 向指定元素的外部前面插入節(jié)點 content
before(function (index, html) {}) 使用匿名函數(shù)向指定元素的外部前面插入節(jié)點
insertAfter(content) 將指定節(jié)點移到指定元素 content 外部的后面
insertBefore(content) 將指定節(jié)點移到指定元素 content 外部的前面

與上面相同insertAfter(content)insertBefore(content)也與其它兩個是相反的。

三.包裹節(jié)點

jQuery 提供了一系列方法用于包裹節(jié)點,那包裹節(jié)點是什么意思呢?其實就是使用字符串代碼將指定元素的代碼包含著的意思。

方法名 描述
wrap(html) 向指定元素包裹一層 html 代碼
wrap(element) 向指定元素包裹一層 DOM 對象節(jié)點
wrap(function (index) {}) 使用匿名函數(shù)向指定元素包裹一層自定義內(nèi)容
unwrap() 移除一層指定元素包裹的內(nèi)容(多層需移除多次)
wrapAll(html) 用 html 將所有元素包裹到一起
wrapAll(element) 用 DOM 對象將所有元素包裹在一起
wrapInner(html) 向指定元素的子內(nèi)容包裹一層 html
wrapInner(element) 向指定元素的子內(nèi)容包裹一層 DOM 對象節(jié)點
wrapInner(function (index) {}) 用匿名函數(shù)向指定元素的子內(nèi)容包裹一層

wrap的多種用法:

$("div").wrap(""); //在 div 外層包裹一層 strong
$("div").wrap("123"); //包裹的元素可以帶內(nèi)容
$("div").wrap(""); //包裹多個元素
$("div").wrap($("strong").get(0)); //也可以包裹一個原生 DOM
$("div").wrap(document.createElement("strong")); //臨時的原生 DOM
$("div").wrap(function (index) { //匿名函數(shù)
    return "";
});

注意: .wrap().wrapAll()的區(qū)別在前者把每個元素當成一個獨立體,分別包含一層外層;后者將所有元素作為一個整體作為一個獨立體,只包含一層外層。這兩種都是在外層包含,而.wrapInner()在內(nèi)層包含。

四. 節(jié)點操作
方法名 描述 參數(shù)解析
$("div").clone(true); 復制一個節(jié)點 true時表示同時復制事件行為,空或false都表示只復制元素及內(nèi)容
$("div").remove("#box"); 刪除一個id=box的div元素 無參數(shù)時,表示直接刪除元素
$("div").detach(); 保留事件行為的刪除 同上
$("div").empty(); 情況節(jié)點里的內(nèi)容 無參數(shù)
$("div").replaceWith("節(jié)點") 將 div 替換成 span 元素 HTML字符串,DOM元素,或者jQuery對象
$("節(jié)點").replaceAll("div"); 同上 同上

注意:

.remove().detach()都是刪除節(jié)點,而刪除后本身方法可以返回當前被刪除的節(jié)點對象,但區(qū)別在于前者在恢復時不保留事件行為,后者則保留。

節(jié)點被替換后,所包含的事件行為就全部消失了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/78381.html

相關(guān)文章

  • jQuery入門筆記(七)插件

    摘要:目前插件已超過幾千種,由來自世界各地的開發(fā)者共同編寫驗證和完善。而對于開發(fā)者而言,直接使用這些插件將快速穩(wěn)定架構(gòu)系統(tǒng),節(jié)約項目成本。也就是說,插件也是代碼,通過文件引入的方式植入即可?,F(xiàn)在我們就完成了一個下拉菜單的插件。 插件(Plugin)也成為 jQuery 擴展(Extension),是一種遵循一定規(guī)范的應用程序接口編寫出來的程序。目前 jQuery 插件已超過幾千種,由來自世界...

    defcon 評論0 收藏0
  • jQuery入門筆記(三)事件詳解

    摘要:可以傳遞三個參數(shù)表示一個或多個事件類型,比如。表示綁定到指定元素的處理函數(shù)。我們稱它為簡寫事件。必須在中,并且使用作為事件觸發(fā)元素,不然無效。和表示鼠標移入和移出的時候觸發(fā)。按下返回按下返回和分別表示光標激活和丟失,事件觸發(fā)時機是當前元素。 轉(zhuǎn)自個人博客 在JavaScript 有一個非常重要的功能,就是事件驅(qū)動。如果你的網(wǎng)頁需要與用戶進行交互的話,就不可能不用到事件。它在頁面完全加...

    GitCafe 評論0 收藏0
  • 前端文檔收集

    摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個最重要的技術(shù)點常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實現(xiàn)的大排序算法一怪對象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術(shù)點 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...

    jsbintask 評論0 收藏0
  • 前端文檔收集

    摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個最重要的技術(shù)點常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實現(xiàn)的大排序算法一怪對象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術(shù)點 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...

    muddyway 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<