摘要:前面也花了不少時(shí)間,專門介紹了基礎(chǔ)這一塊,從最基礎(chǔ)的講起,再到以及特效。對(duì)象,文檔對(duì)象模型,每一份都可以表示成一棵樹。注意選擇器返回的是對(duì)象。名稱用法描述相當(dāng)于,子類選擇器相當(dāng)于后代選擇器查找兄弟節(jié)點(diǎn),不包括自己本身。
jQuery 前言
Sorry:由于春節(jié)前工作的調(diào)動(dòng),加上這段時(shí)間公司任務(wù)比較多一直加班,所以文章停更了很久,期間也有不少朋友私信、評(píng)論我,希望我寫的快一點(diǎn),在這里跟大家道個(gè)歉,后面更新速度可能會(huì)放緩,但是不會(huì)影響文章的質(zhì)量,謝謝大家的支持。
前面也花了不少時(shí)間,專門介紹了js基礎(chǔ)這一塊,從最基礎(chǔ)的js講起,再到DOM、BOM以及特效。雖然花費(fèi)了不少時(shí)間,不過在寫這些文章的時(shí)候,自己也收獲了很多東西。所以我還是會(huì)一如既往的寫下去。希望收藏文章的小伙伴們,不僅僅只是收藏,更重要的是多閱讀、多理解。
1. jQuery基本概念jQuery是一個(gè)javascript庫,jQuery憑借著簡潔的語法和跨平臺(tái)的兼容性,極大的簡化了js操作DOM、處理事件、執(zhí)行動(dòng)畫等操作。jQuery強(qiáng)調(diào)的理念是:"write less, do more"(寫的少,做的多)。1.1 什么是 jQuery?
jQuery就是一個(gè)js庫,使用jQuery的話,會(huì)比使用JavaScript更簡單。官網(wǎng)地址js庫:把一些常用到的方法寫到一個(gè)多帶帶的js文件,使用的時(shí)候直接去引用這js文件就可以了。(animate.js、common.js)。
我們知道了,jQuery其實(shí)就是一個(gè)js文件,里面封裝了一大堆的方法方便我們的開發(fā),因此我們學(xué)習(xí)jQuery,其實(shí)就是學(xué)習(xí)jQuery這個(gè)js文件中封裝的一大堆方法。
1.2 jQuery 的版本官網(wǎng)下載地址:點(diǎn)擊下載。jQuery的版本有很多,分為:1.x、2.x、3.x。
版本分類:
版本 | 兼容范圍 |
---|---|
1.x版本 | 能夠兼容IE678瀏覽器 |
2.x版本 | 不兼容IE678瀏覽器 |
3.x版本 | 不兼容IE678瀏覽器,更加的簡潔 |
1.x和2.x版本jquery都不再更新版本了,現(xiàn)在只更新3.x版本。
壓縮版與未壓縮版:
名稱 | 大小 | 說明 |
---|---|---|
jquery.js(開發(fā)版) | 約229KB | 完整無壓縮版本,主要用于測試、學(xué)習(xí)和開發(fā) |
jquery.min.js(生產(chǎn)版) | 約31KB | 經(jīng)過壓縮,主要用于產(chǎn)品和項(xiàng)目,基本無可閱讀性 |
jQuery不需要安裝,直接在頁面中引用即可。
初識(shí)jQuery
使用jQuery的三個(gè)步驟:
引入jQuery文件
入口函數(shù)
功能實(shí)現(xiàn)
關(guān)于jQuery的入口函數(shù):
第一種寫法:
$(document).ready(function(){ // 執(zhí)行代碼 });
第二種寫法:
$(function(){ // 執(zhí)行代碼 });
首先我們得明確一點(diǎn),在 jQuery 庫中, ‘$’ 就是 jQuery 的一個(gè)簡寫形式。
jQuery入口函數(shù)與js入口函數(shù)對(duì)比:
類別 | window.onload | $(document).ready() |
---|---|---|
執(zhí)行時(shí)機(jī) | 必須等待網(wǎng)頁中所有的內(nèi)容加載完畢后(包括圖片)才能執(zhí)行 | 網(wǎng)頁中所有DOM結(jié)構(gòu)繪制完畢后就執(zhí)行,并不會(huì)等待圖片、文件的加載 |
編寫個(gè)數(shù) | 不能同時(shí)寫多個(gè),下面的會(huì)把上面的覆蓋 | 能同時(shí)編寫多個(gè),兩個(gè)入口函數(shù)互不影響 |
簡化寫法 | 無 | $(function(){}); |
示例代碼: [ 01-初識(shí)jQuery.html ]
$(document).ready(function() { alert("123"); }); // 簡寫入口函數(shù) $(function() { alert("呵呵"); });1.4 jQuery對(duì)象 和 DOM對(duì)象
第一次學(xué)習(xí)jQuery,經(jīng)常分辨不清哪些是jQuery對(duì)象,哪些是DOM對(duì)象,通過本節(jié)我們來了解一下它們之間的關(guān)系。
1、DOM對(duì)象
DOM(Document Object Model,文檔對(duì)象模型),每一份DOM都可以表示成一棵樹。
var domObj = document.getElementById("id"); // 獲得DOM對(duì)象 var objHTML = domObj.innerHTML; // 使用Javascript中的屬性-innerHTML
在 js 中,通過 getElementByTagName 或者 getElementById 來獲取元素節(jié)點(diǎn)。像這樣得到的 DOM 元素就是 DOM 對(duì)象。而且 DOM 對(duì)象可以使用 js 中的方法,如: innerHTML。
2、jQuery對(duì)象
jQuery對(duì)象,是通過jQuery包裝DOM對(duì)象后產(chǎn)生的對(duì)象,jQuery對(duì)象是jQuery獨(dú)有的,它可以使用jQuery里面的方法。
例如:
// 獲取id為test的元素內(nèi)的html代碼 $("#test").html(); // .html()是jQ里面的方法
上面的代碼等同于:
document.getElementById("test").innerHTML;
在jQ中,無法使用任何DOM對(duì)象的方法,例如:$("id").innerHTML,這是錯(cuò)誤的寫法。同樣,在js中也無法使用jQ對(duì)象里面的方法,例如:document.getElementById("id").html(),這樣也是錯(cuò)誤的。
1.5 jQuery對(duì)象 和 DOM對(duì)象相互轉(zhuǎn)換為了大家在兩者對(duì)象轉(zhuǎn)換的時(shí)候不混淆,在定義jQ對(duì)象的時(shí)候,前面加上‘$’符。
var $variable; // jQuery 對(duì)象 var variable; // DOM 對(duì)象
1、jQ對(duì)象轉(zhuǎn)成DOM對(duì)象:
jQ對(duì)象中是不能使用DOM對(duì)象里的方法的,但是如果jQ里的一些方法忘記的時(shí)候,只記得DOM中的方法的時(shí)候,怎么辦呢?這時(shí)候就可以將jQ對(duì)象轉(zhuǎn)換成DOM對(duì)象。
方法一(常用):[index]
var $box = $("#box"); // jQ獲取到的對(duì)象 var box = $box[0]; // 轉(zhuǎn)成DOM對(duì)象 box.innerHTML = "哈哈哈"; // 使用DOM對(duì)象的方法
方法二:get(index)
var $box = $("#box"); // jQ獲取到的對(duì)象 var box = $box.get(0); // 轉(zhuǎn)成DOM對(duì)象 box.innerHTML = "哈哈哈"; // 使用DOM對(duì)象的方法
2、DOM對(duì)象轉(zhuǎn)成jQ對(duì)象:
DOM對(duì)象轉(zhuǎn)成jQ對(duì)象的十分簡單,只需要用$()把DOM對(duì)象包裹起來就是一個(gè)jQ對(duì)象了。轉(zhuǎn)換之后就可以任意使用jQ的方法了。
var box = document.getElementById("#box"); // 獲取的DOM對(duì)象 var $box = $(box); // 轉(zhuǎn)成jQ對(duì)象
示例代碼:隔行變色 [ 02-jq對(duì)象與DOM對(duì)象轉(zhuǎn)換-隔行變色.html ]
效果圖:
2. jQuery 選擇器jQuery選擇器是jQuery為我們提供的一組方法,讓我們更加方便的獲取到頁面中的元素。
注意: jQuery選擇器返回的是jQuery對(duì)象。
2.1 基本選擇器我們都知道css選擇器,這里的基本選擇器跟css的是一模一樣的。
名稱 | 用法 | 描述 |
---|---|---|
ID選擇器 | $("#id"); | 獲取指定ID的元素 |
類選擇器 | $(".class"); | 獲取所有同一類class的所有元素 |
標(biāo)簽選擇器 | $("div"); | 獲取同一類標(biāo)簽的所有元素 |
并集選擇器 | $("div,p,li"); | 使用逗號(hào)分隔,只要符合條件之一就可 |
交集選擇器 | $("div.redClass"); | 獲取class為redClass的div元素 |
.css("name","value")是jQ的一個(gè)方法,可以為jQ對(duì)象設(shè)置樣式。name是樣式的名字,value是樣式的值
例如設(shè)置一個(gè)背景色:
$(function(){ $("#box").css("backgroundColor","cyan"); })
示例代碼:基本選擇器的應(yīng)用 [ 03-jq選擇器-基本選擇器.html ]
我是第ID為one的盒子我是Class為two的盒子我是Class為Three的盒子我是標(biāo)簽p
我是標(biāo)簽span 我是標(biāo)簽i
效果圖:
涉及到的方法:
名稱 | 作用 |
---|---|
css("name","value") | 添加樣式,name是樣式的名字,value是樣式的值 |
名稱 | 用法 | 描述 |
---|---|---|
子代選擇器 | $("ul>li"); | 使用>號(hào),獲取兒子層級(jí)的元素,注意,并不會(huì)獲取孫子層級(jí)的元素 |
后代選擇器 | $("ul li"); | 使用空格,代表后代選擇器,獲取ul下的所有li元素,包括孫子等 |
示例代碼:
我是box1的子代
我是box1的子代
我是box1的后代
我是box1的后代
我是box2的子代
我是box2的子代
我是box2的后代
我是box2的后代
效果圖:
2.3 過濾選擇器過濾選擇器主要是通過特定的過濾規(guī)則來篩選出所需的DOM元素,過濾規(guī)則與css中的偽類選擇器語法相同。即選擇器都以一個(gè)冒號(hào)‘:’開頭。按照不同的過濾規(guī)則,過濾選擇器可以分為:基本過濾、內(nèi)容過濾、可見性過濾、屬性過濾、子元素過濾和表單對(duì)象屬性過濾選擇器。
1、基本過濾選擇器:
名稱 | 用法 | 描述 |
---|---|---|
:first | $("div:first") | 選取所有div元素中,第一個(gè)div元素 |
:last | $("div:last") | 選取所有div元素中,最后一個(gè)div元素 |
:eq(index) | $("li:eq(2)") | 選取所有li元素中,索引號(hào)為2的元素,index從0開始 |
:even | $("li:even") | 選取所有li元素中,索引號(hào)為偶數(shù)的元素 |
:odd | $("li:odd") | 選取所有li元素中,索引號(hào)為奇數(shù)的元素 |
:not(selector) | $("div:not(.box)") | 選取所有div元素中,不是.box的div元素 |
:gt(index) | $("li:gt(1)") | 選取所有li元素中,索引號(hào)大于1的元素,index從0開始 |
:lt(index) | $("li:lt(5)") | 選取所有li元素中,索引號(hào)小于5的元素,index從0開始 |
:header | $(":header") | 選取所有標(biāo)題元素,、、... |
:animated | $("div:animated") | 選取正在執(zhí)行動(dòng)畫的div元素 |
:focus | $(":focus") | 選取當(dāng)前獲取焦點(diǎn)的元素 |
示例代碼:隔行變色 [ 05-jq選擇器-過濾選擇器.html ]
效果圖:
2、內(nèi)容過濾選擇器:
名稱 | 用法 | 描述 |
---|---|---|
:contains(text) | $("div:contains("我")") | 選取含有文本“我”的 所有div元素 |
:empty | $("div:empty") | 選取不包含子元素或者文本的空div元素 |
:has(selector) | $("div:has(p)") | 選取含有p元素的div元素 |
:parent | $("div:parent") | 選取含有子元素或者文本的div元素 |
3、可見性過濾選擇器:
名稱 | 用法 | 描述 |
---|---|---|
:hidden | $(":hidden") | 選取所有不可見的元素 display:none、visibility:hidden等 |
:visible | $("div:visible") | 選取所有可見的div元素 |
4、屬性過濾選擇器:
屬性過濾選擇器是通過元素的屬性來獲取相應(yīng)的元素。
名稱 | 用法 | 描述 | ||
---|---|---|---|---|
[attribute] | $("div[id]") | 選取擁有屬性id的div元素 | ||
[attribute = value] | $("div[title=test]") | 選取屬性title為"test"的div元素 | ||
[attribute != value] | $("div[title!=test]") | 選取屬性title不為"test"的div元素(沒有屬性title的div也會(huì)被選取) | ||
[attribute ^= value] | $("div[title^=test]") | 選取屬性title以"test"開始的div元素 | ||
[attribute $= value] | $("div[title$=test]") | 選取屬性title以"test"結(jié)束的div元素 | ||
[attribute *= value] | $("div[title*=test]") | 選取屬性title含有"test"的div元素 | ||
`[attribute | = value]` | $("`div[title | ="en"]`") | 選取屬性title為en或以en為前綴的div元素 |
[attribute ~= value] | $("div[title~="uk"]") | 選取屬性title用空格分隔的值中包含字符uk的元素 | ||
[attribute][attribute2] | $("div[id][titlr=test]") | 選取擁有屬性id并且屬性title為test的div元素 |
5、子元素過濾選擇器:
名稱 | 用法 | 描述 | ||
---|---|---|---|---|
:first-child | $("ul li:first-child") | 選取每個(gè)ul中第一個(gè)li元素 | ||
:last-child | $("ul li:last-child") | 選取每個(gè)ul中最后一個(gè)li元素 | ||
`:nth-child(index | even | odd)` | $("ul li:nth-child(index)") | 選取每個(gè)ul中第index個(gè)li元素 |
:only-child | $("ul li:only-child") | 選取每個(gè)ul中是唯一子元素的li元素 |
nth-child()選擇器是很常用的子元素過濾選擇器:
:nth-child(even)能選取每個(gè)父元素下的索引值是偶數(shù)的元素;
:nth-child(odd)能選取每個(gè)父元素下的索引值是奇數(shù)的元素;
:nth-child(2)能選取每個(gè)父元素下的索引值是2的元素;
:nth-child(3n)能選取每個(gè)父元素下的索引值是3的倍數(shù)的元素;(n從1開始)
:nth-child(3n+1)能選取每個(gè)父元素下的索引值是3n+1的倍數(shù)的元素;(n從1開始)
5、表單對(duì)象屬性過濾選擇器
名稱 | 用法 | 描述 |
---|---|---|
:enabled | $("#form:enabled") | 選取id名為“form”的表單內(nèi)所有可用元素 |
:disabled | $("#form:disabled") | 選取id名為“form”的表單內(nèi)所有不可用元素 |
:checked | $("input:checked") | 選取所有被選中的input元素(單選框、復(fù)選框) |
:selected | $("select option:selected") | 選取所有被選中的選項(xiàng)元素 |
為了能夠更加方便的操作表單,jQuery還為我們添加了表單選擇器。
名稱 | 用法 | 描述 |
---|---|---|
:input | $(":input") | 選取所有input、textarea、select、button元素 |
:text | $(":text") | 選取所有的單行文本框 |
:password | $(":password") | 選取所有的密碼框 |
:radio | $(":radio") | 選取所有的單選框 |
:checkbox | $(":checkbox") | 選取所有的復(fù)選框 |
:submit | $(":submit") | 選取所有的提交按鈕 |
:image | $(":image") | 選取所有的圖像按鈕 |
:button | $(":button") | 選取所有的按鈕 |
:file | $(":file") | 選取所有的上傳域 |
:hidden | $(":hidden") | 選取所有的不可見元素 |
想要得到獲取的個(gè)數(shù)直接使用:.length方法:
$("#form :input").length; // 獲得頁面中表單元素的個(gè)數(shù)2.5 篩選選擇器
篩選選擇器的功能與過濾選擇器有點(diǎn)類似,但是用法不一樣,篩選選擇器主要是方法。
名稱 | 用法 | 描述 |
---|---|---|
children(selector) | $("ul").children("li") | 相當(dāng)于$(“ul>li”),子類選擇器 |
find(selector) | $("ul").find("li"); | 相當(dāng)于$(“ul li”),后代選擇器 |
siblings(selector) | $("#first").siblings("li"); | 查找兄弟節(jié)點(diǎn),不包括自己本身。 |
parent() | $("#first").parent(); | 查找父親 |
eq(index) | $("li").eq(2); | 相當(dāng)于$(“l(fā)i:eq(2)”),index從0開始 |
next() | $("li").next() | 找下一個(gè)兄弟 |
prev() | $("li").prev() | 找上一次兄弟 |
1、簡單版手風(fēng)琴 [ 06-jq選擇器案例-簡單版手風(fēng)琴.html ]
涉及到的方法:
方法 | 作用 |
---|---|
show() | 顯示 隱藏的匹配元素 |
hide() | 隱藏 顯示的匹配元素 |
注意: this指的是當(dāng)前的DOM對(duì)象,$(this),將this轉(zhuǎn)化為jQ對(duì)象
效果圖:
2、下拉菜單欄案例 [ 07-jq選擇器案例-下拉菜單欄.html ]
涉及到的方法:
方法 | 作用 |
---|---|
mouseleave() | 鼠標(biāo)離開 相當(dāng)于DOM中的onmouseout |
mouseenter() | 鼠標(biāo)進(jìn)入 相當(dāng)于DOM中的onmouseover |
效果圖:
3、高亮顯示圖片 [ 08-jq選擇器案例-高亮顯示.html ]
在案例之前,跟大家說一個(gè)東西,在jQ中,不需要for循環(huán)遍歷,因?yàn)?b>jQ自己會(huì)進(jìn)行遍歷,這在jQ里面就叫隱式迭代。
涉及到的方法:
方法 | 作用 |
---|---|
find() | 查找元素,如:$(".nav").find("li") 找到.nav下面所有的li。 |
效果圖:
4、淘寶廣告案例 [ 09-jq選擇器案例-淘寶廣告案例.html ]
- 女靴
- 雪地靴
- 冬裙
- 呢大衣
- 毛衣
- 棉服
- 女褲
- 羽絨服
- 牛仔褲
- 女包
- 男靴
- 登山鞋
- 皮帶
- 圍巾
- 皮衣
- 男毛衣
- 男棉服
- 男包
涉及到的方法:
方法 | 作用 |
---|---|
index() | 獲取的是當(dāng)前元素在他兄弟元素里面的下標(biāo)。 |
eq() | 選擇第幾個(gè)元素,如:$("li").eq(3).show()讓第三個(gè)li顯示。 |
效果圖:
5、index()方法詳解: [ 10-jq選擇器案例-index方法解讀.html ]
獲取的是當(dāng)前元素在他兄弟元素里面的下標(biāo)。
我是wrap1
我們可以看到,在wrap1里面的時(shí)候,li點(diǎn)擊的時(shí)候,獲取的是它在兄弟元素里面的下標(biāo)。在wrap2里面的時(shí)候,我們點(diǎn)擊的是a標(biāo)簽,此時(shí)a標(biāo)簽是沒有兄弟元素的,所以,不管點(diǎn)擊哪一個(gè)都是返回‘0’。
效果圖:
3. jQuery 節(jié)點(diǎn)操作 3.1 查找節(jié)點(diǎn)查找節(jié)點(diǎn)非常容易,只要結(jié)合前面選擇器來完成。
1、查找元素節(jié)點(diǎn) [ 11-jqDOM操作-查找元素節(jié)點(diǎn).html ]
2、查找屬性節(jié)點(diǎn) [ 12-jqDOM操作-查找屬性節(jié)點(diǎn).html ]
使用jQ選擇器,查找到需要的元素后,可以使用attr()方法來獲取它的各種屬性的值。attr()的參數(shù)可以是一個(gè),也可以是兩個(gè),參數(shù)是一個(gè)的時(shí)候,則是要查詢的屬性的名字。
3.2 創(chuàng)建節(jié)點(diǎn)這是一句意味深長的話
我們可以輕松的找到文檔中某個(gè)特定的元素節(jié)點(diǎn),并且可以通過attr()方法來獲取元素各種各樣的屬性的值。但是真正的DOM操作并非這么簡單。在DOM操作中,常常需要?jiǎng)討B(tài)創(chuàng)建HTML內(nèi)容,使文檔在瀏覽器里的呈現(xiàn)效果發(fā)生變化,并且達(dá)到人機(jī)交互的目的。 [ 13-jqDOM操作-創(chuàng)建節(jié)點(diǎn).html ]
1、創(chuàng)建元素節(jié)點(diǎn)
創(chuàng)建元素節(jié)點(diǎn)很簡單,直接使用 $(html),html就是需要添加的元素。$(html)方法會(huì)根據(jù)傳入的HTML標(biāo)記字符串,創(chuàng)建一個(gè)DOM對(duì)象,并將這個(gè)DOM對(duì)象包裝成一個(gè)jQuery對(duì)象后返回。
$(function() { // 創(chuàng)建一個(gè)li元素 var $li = $(""); // 將創(chuàng)建的li添加到ul中 $("ul").append($li); // append 添加節(jié)點(diǎn) 下一節(jié)講 });
因?yàn)閯?chuàng)建的只是一個(gè)元素節(jié)點(diǎn),所以里面沒有內(nèi)容只會(huì)看到li的一個(gè)標(biāo)題點(diǎn):
2、創(chuàng)建文本節(jié)點(diǎn)
var $li_1 = $("
創(chuàng)建文本節(jié)點(diǎn)就是在創(chuàng)建元素節(jié)點(diǎn)時(shí),直接把文本內(nèi)容寫出來:
3、創(chuàng)建屬性節(jié)點(diǎn)
var $li_3 = $("
創(chuàng)建屬性節(jié)點(diǎn)的時(shí)候,與創(chuàng)建文本節(jié)點(diǎn)類似,直接將屬性寫在標(biāo)簽里:
3.3 添加節(jié)點(diǎn)上面我們知道了如何動(dòng)態(tài)創(chuàng)建一個(gè)元素,但是沒有實(shí)際用處,所以還需要將新創(chuàng)建的元素添加到文檔中。
添加節(jié)點(diǎn)的方法:
名稱 | 用法 | 描述 |
---|---|---|
append() | $("ul").append(" |
在ul子元素的最后面依次添加li |
appendTo() | $(" |
將li添加到ul子元素的最后面,參數(shù)與append正好顛倒過來 |
prepend() | $("ul").prepend(" |
在ul子元素的最前面依次添加li |
prependTo() | $(" |
將li添加到ul子元素的最前面,參數(shù)與prepend正好顛倒過來 |
after() | $("ul").after("哈哈哈1") |
在ul的后面添加h2(兄弟元素) |
insertAfter() | $("哈哈哈2").insertAfter("ul") |
將h2添加到ul的后面,參數(shù)與after正好顛倒過來 |
before() | $("ul").before("城市1") |
在ul的前面添加h2(兄弟元素) |
insertBefore() | $("城市2").insertBefore("ul") |
將h2添加到ul的前面,參數(shù)與before正好顛倒過來 |
示例代碼: [ 14-jqDOM操作-添加節(jié)點(diǎn).html ]
這是ul外面的p標(biāo)簽
效果圖:
3.4 刪除節(jié)點(diǎn)如果文檔中某一個(gè)元素多余的時(shí)候,那么就應(yīng)該將其刪除。jQuery提供了三種刪除節(jié)點(diǎn)的方法:remove(),detach(),empty()。
1、remove()方法
從DOM中刪除所有匹配的元素,當(dāng)某個(gè)節(jié)點(diǎn)用remove()方法刪除之后,該節(jié)點(diǎn)包含的所有后代節(jié)點(diǎn)將同時(shí)被刪除,并且返回值就是該刪除的節(jié)點(diǎn)。
示例代碼: [ 15-jqDOM操作-remove刪除節(jié)點(diǎn).html ]
效果圖:
另外remove()方法也可以通過傳遞參數(shù)來選擇性的刪除元素:
$("ul li").remove("li[title != 上海]"); // 將li中屬性title不等于‘上?!膌i移除掉
2、detach()方法
detach()方法和remove()一樣,也是從DOM中,去掉所有匹配的元素。但是這個(gè)方法不會(huì)把匹配的元素從jQuery對(duì)象中刪除,就是說所有綁定的事件、附加的數(shù)據(jù)都會(huì)保留下來。
示例代碼: [ 16-jqDOM操作-detach刪除節(jié)點(diǎn).html ]
- 北京
- 上海
- 深圳
- 天津
- 重慶
效果圖:
我們可以看到,“上?!币婚_始是可以被點(diǎn)擊的,detach刪除以后,再添加到ul中的時(shí)候,它的點(diǎn)擊事件還在,還可以點(diǎn)擊。但是如果使用的是remove刪除的話,點(diǎn)擊事件就會(huì)被移除。
3、empty()方法
empty方法不是刪除節(jié)點(diǎn),準(zhǔn)確的說,它是清空節(jié)點(diǎn),它能清除匹配元素中的所有后代節(jié)點(diǎn)和內(nèi)容。
示例代碼: [ 17-jqDOM操作-empty清空節(jié)點(diǎn).html ]
效果圖:
empty是清空匹配項(xiàng)的內(nèi)容,不管里面是文本還是有其它標(biāo)簽,都會(huì)被清空,但是匹配項(xiàng)的標(biāo)簽還會(huì)保留,不會(huì)被清空
3.5 克隆節(jié)點(diǎn)克隆節(jié)點(diǎn)也是常用的DOM操作之一,它是通過clone()方法實(shí)現(xiàn)的,同樣的,它也有深拷貝和淺拷貝。深拷貝和淺拷貝的區(qū)別就是,深拷貝會(huì)復(fù)制綁定的事件,而淺拷貝不會(huì)。實(shí)現(xiàn)原理很簡單,只要clone(true),加上true,就是深拷貝,默認(rèn)不傳或者傳false就是淺拷貝。
示例代碼: [ 18-jqDOM操作-克隆節(jié)點(diǎn).html ]
淺拷貝
效果圖:
我們可以看出,淺拷貝的時(shí)候,點(diǎn)擊“北京”克隆了一個(gè)“北京”的標(biāo)簽,并且添加到了ul中,但是新創(chuàng)建出來的沒有點(diǎn)擊事件。深拷貝的時(shí)候,新創(chuàng)建出來的還可以再次被點(diǎn)擊,說明綁定事件,也拷貝了。
3.6 替換節(jié)點(diǎn)如果要替換某個(gè)節(jié)點(diǎn),jQuery提供了兩個(gè)方法,即replaceWith()和replaceAll()。replaceWith()方法是將所有匹配的元素替換成指定的HTML或DOM,replaceAll()方法的作用與replaceWith()方法的作用一模一樣,只是顛倒了參數(shù)。
示例代碼: [ 19-jqDOM操作-替換節(jié)點(diǎn).html ]
效果圖:
替換前如果已經(jīng)為元素綁定事件,替換后原先綁定的事件將會(huì)與被替換的元素一起消失。
3.7 包裹節(jié)點(diǎn)如果想要將某個(gè)節(jié)點(diǎn),用其他標(biāo)記包裹起來,jQuery提供了相應(yīng)的方法,即wrap()。它還有兩個(gè)其他的方法:wrapAll()、wrapInner()。
名稱 | 用法 | 描述 |
---|---|---|
wrap() | $("h3").wrap("") | 將所有的h3標(biāo)簽多帶帶用i標(biāo)簽包裹起來 |
wrapAll() | $("h3").wrapAll("") | 將所有的h3標(biāo)簽全部包裹在i標(biāo)簽內(nèi) |
wrapInner() | $("h3").wrapInner("") | 將h3標(biāo)簽里面的子內(nèi)容(包括文本節(jié)點(diǎn))用i標(biāo)簽包裹起來 |
示例代碼: [ 20-jqDOM操作-包裹節(jié)點(diǎn).html ]
這里是上海
這里是上海
這里是上海
這里是上海
這里是上海
這里是上海
效果圖:
3.8 遍歷節(jié)點(diǎn)本章第一節(jié)的時(shí)候,我們知道了如何查找節(jié)點(diǎn),在jQuery中,還提供了一些查找節(jié)點(diǎn)的方法,我們通過這一小節(jié)的學(xué)習(xí),來認(rèn)識(shí)它們。
1、children()方法:
該方法用于獲得匹配元素的子元素的集合。
注意: children()方法只能考慮子元素,后代元素不考慮。
2、next()方法 和 nextAll()方法:
next()方法用于獲得匹配元素后面緊鄰的同級(jí)元素。nextAll()方法用于獲得匹配元素后面所有的同級(jí)元素。
這是一段意味深長的話
3、prev()方法 和 prevAll()方法:
prev()方法用于獲得匹配元素前面緊鄰的同級(jí)元素。prevAll()方法用于獲得匹配元素前面所有的同級(jí)元素。
這是一段意味深長的話
4、siblings()方法:
該方法用于匹配元素前后所有的兄弟元素。
這是一段意味深長的話
5、closest()方法:
該方法用于獲取最近的匹配元素。首先檢查當(dāng)前元素是否匹配,匹配的話直接返回,如果不匹配則向上查找父元素,逐級(jí)向上,直到找到匹配的元素,如果什么也沒找到,返回一個(gè)空的jQ對(duì)象。
6、parent() 和 parents()方法:
parent()方法是獲得匹配元素的父級(jí)元素。parents()方法獲取的是匹配元素的祖先元素。
我們可以對(duì)比下closest()方法和parent()、parents()方法的區(qū)別,根據(jù)實(shí)際需求靈活使用。
3.9 節(jié)點(diǎn)操作案例1、選好友案例:
效果圖:
2、微博發(fā)布案例
微博發(fā)布
效果圖:
4. jQuery 屬性操作 4.1 attr 操作在jQuery中,用attr()方法來獲取和設(shè)置元素屬性,removeAttr()方法來刪除元素屬性。
1、獲取屬性和設(shè)置屬性
attr(),可
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93381.html
摘要:個(gè)人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開始萌生寫文章的想法,到著手...
摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...
摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...
摘要:可以傳遞三個(gè)參數(shù)表示一個(gè)或多個(gè)事件類型,比如。表示綁定到指定元素的處理函數(shù)。我們稱它為簡寫事件。必須在中,并且使用作為事件觸發(fā)元素,不然無效。和表示鼠標(biāo)移入和移出的時(shí)候觸發(fā)。按下返回按下返回和分別表示光標(biāo)激活和丟失,事件觸發(fā)時(shí)機(jī)是當(dāng)前元素。 轉(zhuǎn)自個(gè)人博客 在JavaScript 有一個(gè)非常重要的功能,就是事件驅(qū)動(dòng)。如果你的網(wǎng)頁需要與用戶進(jìn)行交互的話,就不可能不用到事件。它在頁面完全加...
閱讀 2586·2021-11-25 09:43
閱讀 1863·2021-09-22 15:26
閱讀 3742·2019-08-30 15:56
閱讀 1714·2019-08-30 15:55
閱讀 1899·2019-08-30 15:54
閱讀 816·2019-08-30 15:52
閱讀 3158·2019-08-29 16:23
閱讀 897·2019-08-29 12:43