jQuery

jQuery模塊

選擇器、DOM操作弟断、事件兵拢、AJAX與動(dòng)畫(huà)

匿名函數(shù)自執(zhí)行

作用:解決命名空間與變量污染的問(wèn)題

總結(jié):全局變量是魔鬼,?匿名函數(shù)可以有效的保證在頁(yè)面上寫(xiě)入JavaScript正蛙,而不會(huì)造成全局變量的污染然想,通過(guò)小括號(hào)温治,讓其加載的時(shí)候立即初始化扯罐,這樣就形成了一個(gè)單例模式的效果從而只會(huì)執(zhí)行一次

jQuery與DOM

jQuery是一個(gè)類(lèi)數(shù)組對(duì)象陆赋,而DOM對(duì)象就是一個(gè)單獨(dú)的DOM元素

如何把jQuery對(duì)象轉(zhuǎn)成DOM對(duì)象:

????var $div = $('div')? ? //jQuery對(duì)象

????var div = $div.get(0)? ?//轉(zhuǎn)化成DOM對(duì)象

????div.style.color = 'red'? ? //操作dom對(duì)象的屬性

如何將DOM對(duì)象轉(zhuǎn)化成jQuery對(duì)象:

????var div = document.getElementsByTagName('div'); //dom對(duì)象

????var $div = $(div); //jQuery對(duì)象

????var $first = $div.first(); //找到第一個(gè)div元素

????$first.css('color', 'red'); //給第一個(gè)元素設(shè)置顏色

jQuery 選擇器

1. id選擇器? ??$( "#id" )? ? ? ? =>dpcument.getElementById('id')

2.?類(lèi)選擇器? ?$( ".class" )? ? ? ? => document.getElementsByClassName('class');

3.?元素選擇器??$( "element" )? => document.getElementsByTagName('div')

4.?全選擇器? ?$( "*" )? ? =>document.getElementsByTagName('*')? ?

5.?層級(jí)選擇器? ?$('div > p')??

6.?基本篩選選擇器??

篩選選擇器的用法與CSS中的偽元素相似

例如:$(".div:first")

7.?內(nèi)容篩選選擇器??

注意:

1》:contains與:has都有查找的意思扛门,但是contains查找包含“指定文本”的元素鸠信,has查找包含“指定元素”的元素

2》如果:contains匹配的文本包含在元素的子元素中,同樣認(rèn)為是符合條件的尖飞。

3》:parent與:empty是相反的症副,兩者所涉及的子元素,包括文本節(jié)點(diǎn)

8.?可見(jiàn)性篩選選擇器

:hidden選擇器政基,不僅僅包含樣式是display="none"的元素贞铣,還包括隱藏表單、visibility等等

可以隱藏一個(gè)元素的方式:

? ? 1.CSS display的值是none沮明。

? ? 2.type="hidden"的表單元素辕坝。

? ? 3. 寬度和高度都顯式設(shè)置為0。

? ? 4.一個(gè)祖先元素是隱藏的荐健,該元素是不會(huì)在頁(yè)面上顯示

? ? 5.CSS visibility的值是hidden

? ? 6.CSS opacity的指是0

注意:如果元素中占據(jù)文檔中一定的空間,元素被認(rèn)為是可見(jiàn)的酱畅。

????????????可見(jiàn)元素的寬度或高度琳袄,是大于零。

????????????元素的visibility: hidden 或 opacity: 0被認(rèn)為是可見(jiàn)的纺酸,因?yàn)樗麄內(nèi)匀徽加每臻g布局

9.?屬性篩選選擇器

例如??$('input[type="text"]')

10.?元素篩選選擇器

注意:

? ? 1. :first只匹配一個(gè)單獨(dú)的元素窖逗,但是:first-child選擇器可以匹配多個(gè):即為每個(gè)父級(jí)元素匹配第一個(gè)子元素。這相當(dāng)于:nth-child(1)

? ? 2. :last 只匹配一個(gè)單獨(dú)的元素餐蔬, :last-child 選擇器可以匹配多個(gè)元素:即碎紊,為每個(gè)父級(jí)元素匹配最后一個(gè)子元素

? ? 3. 如果子元素只有一個(gè)的話,:first-child與:last-child是同一個(gè)

? ? ?4. :only-child匹配某個(gè)元素是父元素中唯一的子元素樊诺,就是說(shuō)當(dāng)前子元素是父元素中唯一的元素仗考,則匹配

? ? ?5. jQuery實(shí)現(xiàn):nth-child(n)是嚴(yán)格來(lái)自CSS規(guī)范,所以n值是“索引”词爬,也就是說(shuō)秃嗜,從1開(kāi)始計(jì)數(shù),:nth-child(index)從1開(kāi)始的顿膨,而eq(index)是從0開(kāi)始的

? ? ?6. nth-child(n) 與 :nth-last-child(n) 的區(qū)別前者是從前往后計(jì)算锅锨,后者從后往前計(jì)算

11.?表單元素選擇器

12.?表單對(duì)象屬性篩選選擇器

注意:

????選擇器適用于復(fù)選框和單選框,對(duì)于下拉框元素, 使用 :selected 選擇器

????在某些瀏覽器中虽惭,選擇器:checked可能會(huì)錯(cuò)誤選取到<option>元素橡类,所以保險(xiǎn)起見(jiàn)換用選擇器input:checked,確保只會(huì)選取元素

13.?特殊選擇器this

this是JavaScript中的關(guān)鍵字芽唇,指的是當(dāng)前的上下文對(duì)象顾画,簡(jiǎn)單的說(shuō)就是方法/屬性的所有者

注意:

? ??this,表示當(dāng)前的上下文對(duì)象是一個(gè)html對(duì)象匆笤,可以調(diào)用html對(duì)象所擁有的屬性和方法研侣。

? ??$(this),代表的上下文對(duì)象是一個(gè)jquery的上下文對(duì)象,可以調(diào)用jQuery的方法和屬性值炮捧。

jQuery的屬性與樣式

1. attr()? prop()?

操作特性的DOM方法主要有3個(gè):getAttribute庶诡、setAttribute、removeAttribute

jQuery:attr()? 獲取和設(shè)置元素屬性咆课、removeAttr()

獲取Attribute就需要用attr末誓,獲取Property(特性)就需要用prop

2.?html()? text()

.html()??獲取集合中第一個(gè)匹配元素的HTML內(nèi)容 或 設(shè)置每一個(gè)匹配元素的html內(nèi)容

注意:.html()方法內(nèi)部使用的是DOM的innerHTML屬性來(lái)處理的,所以在設(shè)置與獲取上需要注意的一個(gè)最重要的問(wèn)題书蚪,這個(gè)操作是針對(duì)整個(gè)HTML內(nèi)容(不僅僅只是文本內(nèi)容)

.text()??得到匹配元素集合中每個(gè)元素的文本內(nèi)容結(jié)合喇澡,包括他們的后代,或設(shè)置匹配元素集合中每個(gè)元素的文本內(nèi)容為指定的文本內(nèi)容

3.?.val()? ?用于處理表單元素的值

.html(),.text()和.val()的區(qū)別:?

????1>.html()殊校、.text()晴玖、.val()三種方法都是用來(lái)讀取選定元素的內(nèi)容;只不過(guò).html()是用來(lái)讀取元素的html內(nèi)容(包括html標(biāo)簽),.text()用來(lái)讀取元素的純文本內(nèi)容呕屎,包括其后代元素让簿,.val()是用來(lái)讀取表單元素的"value"值。其中.html()和.text()方法不能使用在表單元素上,而.val()只能使用在表單元素上秀睛;另外.html()方法使用在多個(gè)元素上時(shí)尔当,只讀取第一個(gè)元素;.val()方法和.html()相同琅催,如果其應(yīng)用在多個(gè)元素上時(shí)居凶,只能讀取第一個(gè)表單元素的"value"值,但是.text()和他們不一樣藤抡,如果.text()應(yīng)用在多個(gè)元素上時(shí),將會(huì)讀取所有選中元素的文本內(nèi)容抹估。

????2>.html(htmlString),.text(textString)和.val(value)三種方法都是用來(lái)替換選中元素的內(nèi)容缠黍,如果三個(gè)方法同時(shí)運(yùn)用在多個(gè)元素上時(shí),那么將會(huì)替換所有選中元素的內(nèi)容药蜻。

????3>.html(),.text(),.val()都可以使用回調(diào)函數(shù)的返回值來(lái)動(dòng)態(tài)的改變多個(gè)元素的內(nèi)容瓷式。

4.?.addClass()? ?.removeClass()

????.addClass()? ??增加樣式

? ?.removeClass()? ?刪除樣式

5. 切換樣式.toggleClass()

通過(guò)toggleClass方法動(dòng)態(tài)添加刪除Class,一次執(zhí)行相當(dāng)于addClass语泽,再次執(zhí)行相當(dāng)于removeClass

6.?樣式操作.css()

.css() :獲取元素樣式屬性的計(jì)算值或者設(shè)置元素的CSS屬性

7.?元素的數(shù)據(jù)存儲(chǔ)

通過(guò)$.data方式設(shè)置數(shù)據(jù) 取數(shù)據(jù)

jQuery操作DOM

JavaScript創(chuàng)建div節(jié)點(diǎn)元素

創(chuàng)建流程:

????創(chuàng)建節(jié)點(diǎn)(常見(jiàn)的:元素贸典、屬性和文本)

????添加節(jié)點(diǎn)的一些屬性

????加入到文檔中

流程中涉及的方法:

????創(chuàng)建元素:document.createElement

????設(shè)置屬性:setAttribute

????添加文本:innerHTML

????加入文檔:appendChild

1. jQuery?創(chuàng)建元素節(jié)點(diǎn)

? ??$("<div>是文本節(jié)點(diǎn)</div>")

2.?DOM內(nèi)部插入append() 、appendTo()

append()前面是被插入的對(duì)象踱卵,后面是要在對(duì)象內(nèi)插入的元素內(nèi)容

appendTo()前面是要插入的元素內(nèi)容廊驼,而后面是被插入的對(duì)象

3.?DOM外部插入after()、before()

before與after都是用來(lái)對(duì)相對(duì)選中元素外部增加相鄰的兄弟節(jié)點(diǎn)

都可以接收HTML字符串惋砂,DOM 元素妒挎,元素?cái)?shù)組,或者jQuery對(duì)象西饵,用來(lái)插入到集合中每個(gè)匹配元素的前面或者后面

都支持多個(gè)參數(shù)傳遞

4.?內(nèi)部插入prepend()與prependTo()

5.?外部插入insertAfter()與insertBefore()

使用

6.?DOM節(jié)點(diǎn)刪除? empty()? 酝掩、remove()

? ? empty()? ?只移除了 指定元素中的所有子節(jié)點(diǎn)

????通過(guò)empty移除了當(dāng)前div元素下的所有p元素 但是本身id=test的div元素沒(méi)有被刪除

? ??remove( )? 會(huì)將元素自身移除,同時(shí)也會(huì)移除元素內(nèi)部的一切眷柔,包括綁定的事件及與該元素相關(guān)的jQuery數(shù)據(jù)

.aaron下含有內(nèi)容after的刪除


empty和remove區(qū)別:

嚴(yán)格地講期虾,empty()方法并不是刪除節(jié)點(diǎn),而是清空節(jié)點(diǎn)驯嘱,它能清空元素中的所有后代節(jié)點(diǎn)

empty不能刪除自己本身這個(gè)節(jié)點(diǎn)

remove方法?該節(jié)點(diǎn)與該節(jié)點(diǎn)所包含的所有后代節(jié)點(diǎn)將同時(shí)被刪除

提供傳遞一個(gè)篩選的表達(dá)式镶苞,刪除指定合集中的元素

7.?保留數(shù)據(jù)的刪除操作detach()

detach() 讓一個(gè)web元素托管 即從當(dāng)前頁(yè)面中移除該元素,但保留這個(gè)元素的內(nèi)存模型對(duì)象

var a = $("div").detach()? ?移除對(duì)象

$('body').append(a)? ?添加


detach()和remove()區(qū)別:

remove

無(wú)參數(shù)宙拉,移除自身整個(gè)節(jié)點(diǎn)以及該節(jié)點(diǎn)的內(nèi)部的所有節(jié)點(diǎn)宾尚,包括節(jié)點(diǎn)上事件與數(shù)據(jù)

有參數(shù),移除篩選出的節(jié)點(diǎn)以及該節(jié)點(diǎn)的內(nèi)部的所有節(jié)點(diǎn),包括節(jié)點(diǎn)上事件與數(shù)據(jù)

detach

移除的處理與remove一致

與remove()不同的是煌贴,所有綁定的事件御板、附加的數(shù)據(jù)等都會(huì)保留下來(lái)

例如:$("p").detach()這一句會(huì)移除對(duì)象,僅僅是顯示效果沒(méi)有了牛郑。但是內(nèi)存中還是存在的怠肋。當(dāng)你append之后,又重新回到了文檔流中淹朋。就又顯示出來(lái)了


8.?DOM拷貝? ?clone()

.clone()方法? 深度 復(fù)制所有匹配的元素集合笙各,包括所有匹配元素、匹配元素的下級(jí)元素础芍、文字節(jié)點(diǎn)

.clone(true) 深復(fù)制

9.?DOM替換replaceWith()和replaceAll()

.replaceWith( newContent ):用提供的內(nèi)容替換集合中所有匹配的元素并且返回被刪除元素的集合

.replaceAll( target )?用集合的匹配元素替換每個(gè)目標(biāo)元素

10.?DOM包裹? ?

.wrap( wrappingElement ):在集合中匹配的每個(gè)元素周?chē)粋€(gè)HTML結(jié)構(gòu)

.wrap( function )?一個(gè)回調(diào)函數(shù)杈抢,返回用于包裹匹配元素的 HTML 內(nèi)容或 jQuery 對(duì)象

unwrap()? ?將匹配元素集合的父級(jí)元素刪除,保留自身(和兄弟元素仑性,如果存在)在原來(lái)的位置

$('p').unwrap();? ?調(diào)用unwrap方法惶楼,會(huì)刪除p的父輩元素

.wrapAll( wrappingElement )給集合中匹配的元素增加一個(gè)外面包裹HTML結(jié)構(gòu)

.wrapAll( function )?一個(gè)回調(diào)函數(shù),返回用于包裹匹配元素的 HTML 內(nèi)容或 jQuery 對(duì)象

????通過(guò)回調(diào)的方式可以單獨(dú)處理每一個(gè)元素

.wrapInner( wrappingElement|function )給集合中匹配的元素的內(nèi)部诊杆,增加包裹的HTML結(jié)構(gòu)

????$('div').wrapInner(function() {

? ????? return '';

????})


jQuery遍歷

1.?children()

.children(selector)? ?返回匹配元素集合中每個(gè)元素的所有子元素(僅兒子輩歼捐,這里可以理解為就是父親-兒子的關(guān)系)

children()無(wú)參數(shù)

.children()方法選擇性地接受同一類(lèi)型選擇器表達(dá)式

? ??$("div").children(".selected")

? ??$("div").children(":last")

注意:jQuery是一個(gè)合集對(duì)象,所以通過(guò)children是匹配合集中每一個(gè)元素的第一級(jí)子元素

2.?find()?

find是后代關(guān)系(包含父子關(guān)系)??children是父子關(guān)系查找

find是遍歷當(dāng)前元素集合中每個(gè)元素的后代晨汹。只要符合豹储,不管是兒子輩,孫子輩都可以淘这。

與其他的樹(shù)遍歷方法不同剥扣,選擇器表達(dá)式對(duì)于 .find() 是必需的參數(shù)。如果我們需要實(shí)現(xiàn)對(duì)所有后代元素的操作慨灭,可以傳遞通配選擇器 '*'朦乏。

find只在后代中遍歷,不包括自己氧骤。

選擇器 context 是由 .find() 方法實(shí)現(xiàn)的呻疹;因此,$('.item-ii').find('li') 等價(jià)于 $('li', '.item-ii')(找到類(lèi)名為item-ii的標(biāo)簽下的li標(biāo)簽)

如:$('.left').find('a:first').css('color','red')

3.?parent()? ? 快速查找合集里面的每一個(gè)元素的父元素

因?yàn)槭歉冈爻锪辏@個(gè)方法只會(huì)向上查找一級(jí)

4.?parents()? ?快速查找合集里面的每一個(gè)元素的所有祖輩元素

parent只會(huì)查找一級(jí)

parents則會(huì)往上一直查到查找到祖先節(jié)點(diǎn)

$( "html" ).parent()方法返回一個(gè)包含document的集合

$( "html" ).parents()返回一個(gè)空集合

5.?closest() 方法

closest()? ?接受一個(gè)匹配元素的選擇器字符串

從元素本身開(kāi)始刽锤,在DOM 樹(shù)上逐級(jí)向上級(jí)元素匹配,并返回最先匹配的祖先元素


parents()和.closest()區(qū)別

? ? 1>起始位置不同:.closest開(kāi)始于當(dāng)前元素 .parents開(kāi)始于父元素

? ? 2> 遍歷的目標(biāo)不同:.closest要找到指定的目標(biāo)朦佩,.parents遍歷到文檔根元素并思,closest向上查找,直到找到一個(gè)匹配的就停止查找语稠,parents一直查找到根元素宋彼,并將匹配的元素加入集合

? ? 3>結(jié)果不同:.closest返回的是包含零個(gè)或一個(gè)元素的jquery對(duì)象弄砍,parents返回的是包含零個(gè)或一個(gè)或多個(gè)元素的jquery對(duì)象

6.?next()? ?查找指定元素集合中每一個(gè)元素緊鄰的后面同輩元素的元素集合

????$('a').next(':last').css('border','1px solid blue')

7.?prev()??查找指定元素集合中每一個(gè)元素緊鄰的前面同輩元素的元素集合

8.?siblings()? ?查找指定元素集合中每一個(gè)元素的同輩元素

無(wú)參數(shù):?取得一個(gè)包含匹配的元素集合中每一個(gè)元素的同輩元素的元素集合

$('a').siblings(':last-child').css('border','1px solid blue')

9.?add()? ?用來(lái)創(chuàng)建一個(gè)新的jQuery對(duì)象 ,元素添加到匹配的元素集合中

10.?each()

.each() 方法就是一個(gè)for循環(huán)的迭代器输涕,它會(huì)迭代jQuery對(duì)象合集中的每一個(gè)DOM元素音婶。每次回調(diào)函數(shù)執(zhí)行時(shí),會(huì)傳遞當(dāng)前循環(huán)次數(shù)作為參數(shù)(從0開(kāi)始計(jì)數(shù)

jQuery鼠標(biāo)事件

1.?click與dbclick事件

????click? ? ? 方法用于監(jiān)聽(tīng)用戶(hù)單擊操作

????dbclick? 方法用于監(jiān)聽(tīng)用戶(hù)雙擊操作

2.?mousedown與mouseup事件 鼠標(biāo)按上按下

3.?mousemove事件??監(jiān)聽(tīng)用戶(hù)移動(dòng)的的操作

4.?mouseover與mouseout事件? ?監(jiān)聽(tīng)用戶(hù)的移入移出操作

5. mouseenter與mouseleave事件? ?監(jiān)聽(tīng)用戶(hù)操作鼠標(biāo)是否有移到元素內(nèi)部或是元素外部

6.?hover事件??

? ??$(selector).hover(handlerIn, handlerOut)

? ? 1> handlerIn(eventObject):當(dāng)鼠標(biāo)指針進(jìn)入元素時(shí)觸發(fā)執(zhí)行的事件函數(shù)

? ? 2> handlerOut(eventObject):當(dāng)鼠標(biāo)指針離開(kāi)元素時(shí)觸發(fā)執(zhí)行的事件函數(shù)

hover 取代mouseenter和mouseleave?可以避免冒泡問(wèn)題

7.?focusin事件? ?莱坎、focusout事件

focusin? ?當(dāng)一個(gè)元素衣式,或者其內(nèi)部任何一個(gè)元素獲得焦點(diǎn)的時(shí)候

focusout??當(dāng)一個(gè)元素,或者其內(nèi)部任何一個(gè)元素失去焦點(diǎn)的時(shí)候

jQuery表單事件

1.?blur與focus事件? 用于處理表單焦點(diǎn)的事件

事件focus在獲得焦點(diǎn)時(shí)被調(diào)用

事件blur在失去焦點(diǎn)時(shí)被調(diào)用

本質(zhì)區(qū)別:是否支持冒泡處理

focus()在元素本身產(chǎn)生檐什,focusin()在元素包含的元素中產(chǎn)生

2.?change事件

input元素監(jiān)聽(tīng)value值的變化碴卧,當(dāng)有改變時(shí),失去焦點(diǎn)后觸發(fā)change事件乃正。

對(duì)于單選按鈕和復(fù)選框住册,當(dāng)用戶(hù)用鼠標(biāo)做出選擇時(shí),該事件立即觸發(fā)

select元素:對(duì)于下拉選擇框烫葬,當(dāng)用戶(hù)用鼠標(biāo)作出選擇時(shí)界弧,該事件立即觸發(fā)

textarea元素:多行文本輸入框,當(dāng)有改變時(shí)搭综,失去焦點(diǎn)后觸發(fā)change事件

3.?select事件

select事件只能用于<input>元素和<textarea>元素

當(dāng) textarea 或文本類(lèi)型的 input 元素中的文本被選擇時(shí),會(huì)發(fā)生 select 事件

$("#test").select(function() { //響應(yīng)文字選中回調(diào)

? ? //this指向 input元素

});

4.?submit事件??表單的提交

????<div id="test">點(diǎn)擊觸發(fā)

????$("#test").submit(function(){

? ? ????alert('觸發(fā)指定事件')

????})

form元素是有默認(rèn)提交表單的行為划栓,如果通過(guò)submit處理的話兑巾,需要禁止瀏覽器的這個(gè)默認(rèn)行為

傳統(tǒng)的方式是調(diào)用事件對(duì)象? e.preventDefault() 來(lái)處理, jQuery中可以直接在函數(shù)中最后結(jié)尾return false即可

jQuery鍵盤(pán)事件

1.?keydown()與keyup()事件

keydown事件:當(dāng)用戶(hù)在一個(gè)元素上第一次按下鍵盤(pán)上字母鍵的時(shí)候忠荞,就會(huì)觸發(fā)

keyup事件:當(dāng)用戶(hù)在一個(gè)元素上第一次松手鍵盤(pán)上的鍵的時(shí)候蒋歌,就會(huì)觸發(fā)

e.target.value獲取輸入表單的值

2.?keypress()事件??捕獲鍵盤(pán)輸入

keypress事件與keydown和keyup的主要區(qū)別:

????只能捕獲單個(gè)字符,不能捕獲組合鍵

????無(wú)法響應(yīng)系統(tǒng)功能鍵(如delete委煤,backspace)

????不區(qū)分小鍵盤(pán)和主鍵盤(pán)的數(shù)字字符

jQuery事件綁定和解綁

1.?on()的多事件綁定

.on( events ,[?selector ] ,[?data ] )

.on堂油、 .click的區(qū)別:

1> .on?多個(gè)事件綁定同一個(gè)函數(shù)

? ??$("#elem").on("mouseover mouseout",function(){ });

2>??.on多個(gè)事件綁定不同函數(shù)

? ??$("#elem").on({

? ????? mouseover:function(){},?

? ? ????mouseout:function(){}

????});

3>??.on將數(shù)據(jù)傳遞到處理程序

? ??function greet( event ) {

? ????alert( "Hello " + event.data.name ); //Hello 慕課網(wǎng)

????}

????$( "button" ).on( "click", {

? ????name: "慕課網(wǎng)"

????}, greet );

? ?

2.?委托機(jī)制 .on

.on( events ,[ selector ] ,[ data ], handler(eventObject) )

$("div").on("click","p",fn)

事件綁定在最上層div元素上,當(dāng)用戶(hù)觸發(fā)在a元素上碧绞,事件將往上冒泡府框,一直會(huì)冒泡在div元素上。如果提供了第二參數(shù)讥邻,那么事件在往上冒泡的過(guò)程中遇到了選擇器匹配的元素迫靖,將會(huì)觸發(fā)事件回調(diào)函數(shù)

3.?卸載事件off()方法

? ??通過(guò).on()綁定的事件處理程序

????通過(guò)off() 方法移除該綁定

????$("elem").off("mousedown mouseup")

????$("elem").off()? ?節(jié)點(diǎn)上綁定的所有事件講全部銷(xiāo)毀

4. 事件對(duì)象

事件對(duì)象是用來(lái)記錄一些事件發(fā)生時(shí)的相關(guān)信息的對(duì)象。

事件對(duì)象只有事件發(fā)生時(shí)才會(huì)產(chǎn)生兴使,并且只能是事件處理函數(shù)內(nèi)部訪問(wèn)系宜,在所有事件處理函數(shù)運(yùn)行結(jié)束后,事件對(duì)象就被銷(xiāo)毀

target 屬性可以是注冊(cè)事件時(shí)的元素发魄,或者它的子元素

??event.target代表當(dāng)前觸發(fā)事件的元素盹牧,可以通過(guò)當(dāng)前元素對(duì)象的一系列屬性來(lái)判斷是不是我們想要的元素

5.?事件對(duì)象的屬性和方法

event.type:獲取事件的類(lèi)型

event.pageX 和 event.pageY:獲取鼠標(biāo)當(dāng)前相對(duì)于頁(yè)面的坐標(biāo)

event.preventDefault() 方法:阻止默認(rèn)行為

? ???event.isDefaultPrevented() 來(lái)確定這個(gè)方法是否(在那個(gè)事件對(duì)象上)被調(diào)用過(guò)

event.stopPropagation() 方法:阻止事件冒泡

? ??事件是可以冒泡的,為防止事件冒泡到DOM樹(shù)上,也就是不觸發(fā)的任何前輩元素上的事件處理函數(shù)

event.which:獲取在鼠標(biāo)單擊時(shí)汰寓,單擊的是鼠標(biāo)的哪個(gè)鍵

? ??左鍵報(bào)告1口柳,中間鍵報(bào)告2,右鍵報(bào)告3

event.currentTarget : 在事件冒泡過(guò)程中的當(dāng)前DOM元素

? ??冒泡前的當(dāng)前觸發(fā)事件的DOM對(duì)象, 等同于this.

this和event.target的區(qū)別:

js中事件是會(huì)冒泡的踩寇,所以this是可以變化的啄清,但event.target不會(huì)變化,它永遠(yuǎn)是直接接受事件的目標(biāo)DOM元素俺孙;

.this和event.target都是dom對(duì)象

如果要使用jquey中的方法可以將他們轉(zhuǎn)換為jquery對(duì)象辣卒。比如this和$(this)的使用、event.target和$(event.target)的使用睛榄;


trigger() 方法觸發(fā)被選元素的指定事件類(lèi)型

trigger事件還有一個(gè)特性:會(huì)在DOM樹(shù)上冒泡荣茫,所以如果要阻止冒泡就需要在事件處理程序中返回false或調(diào)用事件對(duì)象中的.stopPropagation() 方法可以使事件停止冒泡

trigger事件是具有觸發(fā)原生與自定義能力的,但是存在一個(gè)不可避免的問(wèn)題: 事件對(duì)象event無(wú)法完美的實(shí)現(xiàn)

若要觸發(fā)通過(guò) jQuery 綁定的事件處理函數(shù)场靴,而不觸發(fā)原生的事件啡莉,使用.triggerHandler() 來(lái)代替

triggerHandler與trigger的用法是一樣的,不同:

????triggerHandler不會(huì)觸發(fā)瀏覽器的默認(rèn)行為旨剥,.triggerHandler( "submit" )將不會(huì)調(diào)用表單上的.submit()

????.trigger() 會(huì)影響所有與 jQuery 對(duì)象相匹配的元素咧欣,而 .triggerHandler() 僅影響第一個(gè)匹配到的元素

????使用 .triggerHandler() 觸發(fā)的事件,并不會(huì)在 DOM 樹(shù)中向上冒泡轨帜。 如果它們不是由目標(biāo)元素直接觸發(fā)的魄咕,那么它就不會(huì)進(jìn)行任何處理

????與普通的方法返回 jQuery 對(duì)象(這樣就能夠使用鏈?zhǔn)接梅?相反,.triggerHandler() 返回最后一個(gè)處理的事件的返回值蚌父。如果沒(méi)有觸發(fā)任何事件哮兰,會(huì)返回 undefined

jQuery 動(dòng)畫(huà)

1. 隱藏元素 hide()??顯示元素show()

.hide( options )

.hide( "fast / slow")? 'fast' 和 'slow' 分別代表200和600毫秒的延時(shí),就是元素會(huì)執(zhí)行200/600毫秒的動(dòng)畫(huà)后再隱藏

$('elem').hide(3000).show(3000)

注意事項(xiàng):

show與hide方法是修改的display屬性苟弛,通過(guò)是visibility屬性布局需要通過(guò)css方法單獨(dú)設(shè)置

如果使用!important在你的樣式中喝滞,比如display: none !important,如果你希望.show()方法正常工作膏秫,必須使用.css('display', 'block !important')重寫(xiě)樣式

如果讓show與hide成為一個(gè)動(dòng)畫(huà)右遭,那么默認(rèn)執(zhí)行動(dòng)畫(huà)會(huì)改變?cè)氐母叨龋叨壤蠖茫该鞫?/p>

2. 顯示與隱藏切換toggle方法

? ??.toggle( [duration ] [, complete ] )

3.?下拉動(dòng)畫(huà)slideDown

.slideDown():用滑動(dòng)動(dòng)畫(huà)顯示一個(gè)匹配元素

.slideDown( [duration ] [, complete ] )

下拉動(dòng)畫(huà)是從無(wú)到有狸演,所以一開(kāi)始元素是需要先隱藏起來(lái)的,可以設(shè)置display:none

如 果提供回調(diào)函數(shù)參數(shù)僻他,callback會(huì)在動(dòng)畫(huà)完成的時(shí)候調(diào)用宵距。將不同的動(dòng)畫(huà)串聯(lián)在一起按順序排列執(zhí)行是非常有用的。這個(gè)回調(diào)函數(shù)不設(shè)置任何參數(shù)吨拗,但是 this會(huì)設(shè)成將要執(zhí)行動(dòng)畫(huà)的那個(gè)DOM元素满哪,如果多個(gè)元素一起做動(dòng)畫(huà)效果婿斥,那么要非常注意,回調(diào)函數(shù)會(huì)在每一個(gè)元素執(zhí)行完動(dòng)畫(huà)后都執(zhí)行一次哨鸭,而不是這組 動(dòng)畫(huà)整體才執(zhí)行一次

4. 上卷動(dòng)畫(huà)slideUp

? ??.slideUp( [duration ] [, easing ] [, complete ] )

5.?上卷下拉切換slideToggle

? ? ? ?.slideToggle( [duration ] ,[?complete ] )

注意:

display屬性值保存在jQuery的數(shù)據(jù)緩存中民宿,所以display可以方便以后可以恢復(fù)到其初始值

當(dāng)一個(gè)隱藏動(dòng)畫(huà)后,高度值達(dá)到0的時(shí)候像鸡,display 樣式屬性被設(shè)置為none板熊,以確保該元素不再影響頁(yè)面布局

6.?淡出動(dòng)畫(huà)fadeOut? ? 淡入動(dòng)畫(huà)fadeIn

? ??fadeOut()函數(shù)用于隱藏所有匹配的元素由蘑,并帶有淡出的過(guò)渡動(dòng)畫(huà)效果

? ??fadeIn()函數(shù)用于顯示所有匹配的元素偎血,并帶有淡入的過(guò)渡動(dòng)畫(huà)效果

????fadeIn:淡入效果掺喻,內(nèi)容顯示,opacity是0到1

????fadeOut:淡出效果蛔钙,內(nèi)容隱藏锌云,opacity是1到0

?淡入淡出切換fadeToggle

fadeToggle切換fadeOut與fadeIn效果,所謂"切換"吁脱,即如果元素當(dāng)前是可見(jiàn)的桑涎,則將其隱藏(淡出);如果元素當(dāng)前是隱藏的兼贡,則使其顯示(淡入)

.fadeToggle( [duration ] ,[?complete ] )

7.?淡入效果fadeTo

.fadeTo( duration, opacity ,callback)

8.?jQuery中toggle與slideToggle以及fadeToggle的比較

操作元素的顯示和隱藏可以有幾種方法攻冷,例如:

????改變樣式display為none

????設(shè)置位置高度為0

????設(shè)置透明度為0

toggle、sildeToggle以及fadeToggle的區(qū)別:

????toggle:切換顯示與隱藏效果

????sildeToggle:切換上下拉卷滾效果

????fadeToggle:切換淡入淡出效果

toggle與slideToggle細(xì)節(jié)區(qū)別:

????toggle:動(dòng)態(tài)效果為從右至左遍希。橫向動(dòng)作讲衫,toggle通過(guò)display來(lái)判斷切換所有匹配元素的可見(jiàn)性

????slideToggle:動(dòng)態(tài)效果從下至上。豎向動(dòng)作孵班,slideToggle 通過(guò)高度變化來(lái)切換所有匹配元素的可見(jiàn)性

fadeToggle方法

????fadeToggle() 方法在 fadeIn() 和 fadeOut() 方法之間切換。

????元素是淡出顯示的招驴,fadeToggle() 會(huì)使用淡入效果顯示它們篙程。

????元素是淡入顯示的,fadeToggle() 會(huì)使用淡出效果顯示它們别厘。

? ??注釋?zhuān)?/b>隱藏的元素不會(huì)被完全顯示(不再影響頁(yè)面的布局)

9.?動(dòng)畫(huà)animate

.animate( properties ,[ duration ], [ easing ], [ complete ] )

.animate()方法允許我們?cè)谌我獾臄?shù)值的CSS屬性上創(chuàng)建動(dòng)畫(huà)

? ??properties:一個(gè)或多個(gè)css屬性的鍵值對(duì)所構(gòu)成的Object對(duì)象

? ??duration時(shí)間?動(dòng)畫(huà)執(zhí)行的時(shí)間虱饿,持續(xù)時(shí)間是以毫秒為單位的;值越大表示動(dòng)畫(huà)執(zhí)行的越慢触趴,不是越快氮发。還可以提供'fast' 和 'slow'字符串,分別表示持續(xù)時(shí)間為200 和 600毫秒

? ??easing動(dòng)畫(huà)運(yùn)動(dòng)的算法?jQuery庫(kù)中默認(rèn)調(diào)用 swing冗懦。如果需要其他的動(dòng)畫(huà)算法爽冕,請(qǐng)查找相關(guān)的插件

? ??complete回調(diào)??動(dòng)畫(huà)完成時(shí)執(zhí)行的函數(shù),這個(gè)可以保證當(dāng)前動(dòng)畫(huà)確定完成后發(fā)會(huì)觸發(fā)


.animate( properties, options )

如果多個(gè)元素執(zhí)行動(dòng)畫(huà)披蕉,回調(diào)將在每個(gè)匹配的元素上執(zhí)行一次颈畸,不是作為整個(gè)動(dòng)畫(huà)執(zhí)行一次

10 .?停止動(dòng)畫(huà)stop

.stop()? 當(dāng)前正在運(yùn)行的動(dòng)畫(huà)(如果有的話)立即停止

.stop( [clearQueue ], [ jumpToEnd ] )

.stop( [queue ], [ clearQueue ] ,[ jumpToEnd ] )

.stop(); 停止當(dāng)前動(dòng)畫(huà)乌奇,點(diǎn)擊在暫停處繼續(xù)開(kāi)始

.stop(true); 如果同一元素調(diào)用多個(gè)動(dòng)畫(huà)方法,尚未被執(zhí)行的動(dòng)畫(huà)被放置在元素的效果隊(duì)列中眯娱。這些動(dòng)畫(huà)不會(huì)開(kāi)始礁苗,直到第一個(gè)完成。當(dāng)調(diào)用.stop()的時(shí)候徙缴,隊(duì)列中的下一個(gè)動(dòng)畫(huà)立即開(kāi)始试伙。如果clearQueue參數(shù)提供true值,那么在隊(duì)列中的動(dòng)畫(huà)其余被刪除并永遠(yuǎn)不會(huì)運(yùn)行

.stop(true,true); 當(dāng)前動(dòng)畫(huà)將停止,但該元素上的 CSS 屬性會(huì)被立刻修改成動(dòng)畫(huà)的目標(biāo)值

jQuery核心

1. each()

jQuery.each(array, callback )

jQuery.each( object, callback )

2.?查找數(shù)組中的索引 inArray

jQuery.inArray( value, array ,[ fromIndex ] )

jQuery.inArray()函數(shù)用于在數(shù)組中搜索指定的值于样,并返回其索引值疏叨。如果數(shù)組中不存在該值,則返回 -1

如果要判斷數(shù)組中是否存在指定值百宇,你需要通過(guò)該函數(shù)的返回值不等于(或大于)-1來(lái)進(jìn)行判斷

$.inArray('Aaron',['test','Aaron', 'array','慕課網(wǎng)']);

3.?去空格神器trim()

jQuery.trim()函數(shù)用于去除字符串兩端的空白字符

注意:

????移除字符串開(kāi)始和結(jié)尾處的所有換行符考廉,空格(包括連續(xù)的空格)和制表符(tab)

????如果這些空白字符在字符串中間時(shí),它們將被保留携御,不會(huì)被移除

4.?DOM元素的獲取get方法

如果需要單獨(dú)操作合集中的的某一個(gè)元素昌粤,可以通過(guò).get()方法獲取到

注意:

????get方法是獲取的dom對(duì)象,也就是通過(guò)document.getElementById獲取的對(duì)象

????get方法是從0開(kāi)始索引

負(fù)索引值參數(shù)

get方法還可以從后往前索引啄刹,傳遞一個(gè)負(fù)索引值涮坐,注意的負(fù)值的索引起始值是-1

5.?DOM元素的獲取index方法

.index()方法,從匹配的元素中搜索給定元素的索引值誓军,從0開(kāi)始計(jì)數(shù)

參數(shù)接受一個(gè)jQuery或者dom對(duì)象作為查找的條件

.index()

.index( selector )

.index( element )

?jQuery? Ajax應(yīng)用

1.?使用load()方法異步請(qǐng)求數(shù)據(jù)

2.?使用getJSON()方法異步加載JSON格式數(shù)據(jù)

? ??使用getJSON()方法可以通過(guò)Ajax異步請(qǐng)求的方式袱讹,獲取服務(wù)器中的數(shù)據(jù),并對(duì)獲取的數(shù)據(jù)進(jìn)行解析昵时,顯示在頁(yè)面中

3.?使用getScript()方法異步加載并執(zhí)行js文件

????jQuery.getScript(url,[callback])或$.getScript(url,[callback])

4.?使用get()方法以GET方式從服務(wù)器獲取數(shù)據(jù)

? ??$.get(url,[callback])

5.?使用post()方法以POST方式從服務(wù)器發(fā)送數(shù)據(jù)

? ??$.post(url,[data],[callback])

6.?使用serialize()方法序列化表單元素值

使用serialize()方法可以將表單中有name屬性的元素值進(jìn)行序列化捷雕,生成標(biāo)準(zhǔn)URL編碼文本字符串,直接可用于ajax請(qǐng)求

7.?使用ajax()方法加載服務(wù)器數(shù)據(jù)

? ??jQuery.ajax([settings])或$.ajax([settings])

8. 使用ajaxSetup()方法設(shè)置全局Ajax默認(rèn)選項(xiàng)

9.?使用ajaxStart()和ajaxStop()方法

ajaxStart()和ajaxStop()方法是綁定Ajax事件壹甥。ajaxStart()方法用于在Ajax請(qǐng)求發(fā)出前觸發(fā)函數(shù)救巷,ajaxStop()方法用于在Ajax請(qǐng)求完成后觸發(fā)函數(shù)

jQuery 常用插件

1.?表單驗(yàn)證插件——validate

該插件自帶包含必填、數(shù)字句柠、URL在內(nèi)容的驗(yàn)證規(guī)則浦译,即時(shí)顯示異常信息,此外溯职,還允許自定義驗(yàn)證規(guī)則

$(form).validate({options})

2.?表單插件——form

通過(guò)表單form插件精盅,調(diào)用ajaxForm()方法,實(shí)現(xiàn)ajax方式向服務(wù)器提交表單數(shù)據(jù)谜酒,并通過(guò)方法中的options對(duì)象獲取服務(wù)器返回?cái)?shù)據(jù)

$(form). ajaxForm ({options})

3.?圖片燈箱插件——lightBox

該插件可以用圓角的方式展示選擇中的圖片叹俏,使用按鈕查看上下張圖片,在加載圖片時(shí)自帶進(jìn)度條甚带,還能以自動(dòng)播放的方式瀏覽圖片

$(linkimage).lightBox({options})

4.?圖片放大鏡插件——jqzoom

5.?cookie插件

使用cookie插件后她肯,可以很方便地通過(guò)cookie對(duì)象保存佳头、讀取、刪除用戶(hù)的信息晴氨,還能通過(guò)cookie插件保存用戶(hù)的瀏覽記錄

保存:$.cookie(key康嘉,value);讀茸亚啊:$.cookie(key)亭珍,刪除:$.cookie(keynull)

6.?搜索插件——autocomplete

$(textbox).autocomplete(urlData,[options])

7.?右鍵菜單插件——contextmenu

右鍵菜單插件可以綁定頁(yè)面中的任意元素枝哄,綁定后肄梨,選中元素,點(diǎn)擊右鍵挠锥,便通過(guò)該插件彈出一個(gè)快捷菜單众羡,點(diǎn)擊菜單各項(xiàng)名稱(chēng)執(zhí)行相應(yīng)操作

$(selector).contextMenu(menuId,{options});

jQuery UI插件

1.?拖曳插件——draggable

$(selector). draggable({options})

兩個(gè)子類(lèi)
元素只能在外層的父
元素中任意拖曳
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蓖租,隨后出現(xiàn)的幾起案子粱侣,更是在濱河造成了極大的恐慌,老刑警劉巖蓖宦,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件齐婴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡稠茂,警方通過(guò)查閱死者的電腦和手機(jī)柠偶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)睬关,“玉大人诱担,你說(shuō)我怎么就攤上這事〉绲” “怎么了该肴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)藐不。 經(jīng)常有香客問(wèn)我,道長(zhǎng)秦效,這世上最難降的妖魔是什么雏蛮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮阱州,結(jié)果婚禮上挑秉,老公的妹妹穿的比我還像新娘。我一直安慰自己苔货,他們只是感情好犀概,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布立哑。 她就那樣靜靜地躺著,像睡著了一般姻灶。 火紅的嫁衣襯著肌膚如雪铛绰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天产喉,我揣著相機(jī)與錄音捂掰,去河邊找鬼。 笑死曾沈,一個(gè)胖子當(dāng)著我的面吹牛这嚣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播塞俱,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼姐帚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了障涯?” 一聲冷哼從身側(cè)響起罐旗,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎像樊,沒(méi)想到半個(gè)月后尤莺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡生棍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年颤霎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涂滴。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡友酱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柔纵,到底是詐尸還是另有隱情缔杉,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布搁料,位于F島的核電站或详,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏郭计。R本人自食惡果不足惜霸琴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昭伸。 院中可真熱鬧梧乘,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至仁堪,卻和暖如春哮洽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枝笨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工袁铐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人横浑。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓剔桨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親徙融。 傳聞我的和親對(duì)象是個(gè)殘疾皇子洒缀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 原文鏈接 http://blog.poetries.top/2016/10/20/review-jQuery 關(guān)注...
    程序員poetry閱讀 16,636評(píng)論 18 503
  • jQuery筆記總結(jié)篇 poetries 已關(guān)注 2016.10.20 10:52* 字?jǐn)?shù) 9137 閱讀 660...
    小杰的簡(jiǎn)書(shū)閱讀 1,795評(píng)論 2 32
  • 一、樣式篇 第1章 初識(shí)jQuery (1)環(huán)境搭建 進(jìn)入官方網(wǎng)站獲取最新的版本 http://jquery.co...
    凜0_0閱讀 3,358評(píng)論 0 44
  • 環(huán)境搭建 進(jìn)入官方網(wǎng)站獲取最新的版本 http://jquery.com/download/ 欺冀,這里需要注意 j...
    阿r阿r閱讀 796評(píng)論 0 7
  • 選擇器選擇器是jQuery的核心树绩。 事件 動(dòng)畫(huà) 擴(kuò)展
    wyude閱讀 471評(píng)論 0 1