一阁簸、jQuery 能做什么?
jQuery 是一個庫咖驮,抽象了 DOM API边器,同時解決了瀏覽器兼容性問題训枢,簡化 DOM 操作。用 jQuery忘巧,你可以:
- 選擇網(wǎng)頁元素
- 改變結(jié)果集
- 元素的操作:取值和賦值
- 元素的操作:移動
- 元素的操作:復(fù)制恒界、刪除和創(chuàng)建
- 工具方法
- 事件操作
- 特殊效果
- Ajax
二、jQuery 對象和 DOM 原生對象有什么區(qū)別砚嘴?如何轉(zhuǎn)化十酣?
- 區(qū)別
jQuery 得到的對象和原生方法得到的對象是不一樣的,主要是 jQuery 本身是數(shù)組對象际长;原生對象無法使用 jQuery 方法耸采,jQuery 也無法使用原生 DOM API。兩者可相互轉(zhuǎn)換工育。 - 如何轉(zhuǎn)化
DOM 轉(zhuǎn) jQuery 對象虾宇。
var div = document.querySelector('#id')
var $div = $(div)
jQuery 轉(zhuǎn) DOM ,由于 jQuery 是數(shù)組對象如绸,要轉(zhuǎn)化為 DOM 對象文留,只需要取出其中一項即可
var div = $('div')[0] || $('div').eq(1) || $('div').get(0)
三、jQuery中如何綁定事件竭沫?bind
、unbind
骑篙、delegate
蜕提、live
、on
靶端、off
都有什么作用谎势?推薦使用哪種?使用on綁定事件使用事件代理的寫法杨名?
- bind: 老版本的事件綁定方法脏榆,在一個元素上綁定一個或者多個事件,并沒有實現(xiàn)事件委托台谍,在綁定多個元素時须喂,效率會變低。
- unbind: 解綁一個元素上特定事件趁蕊,缺省值解綁所有事件坞生。
- delegate: 事件綁定在選中元素的根節(jié)點上,有了事件委托掷伙,即使是后續(xù)添加的節(jié)點也有事件相應(yīng)是己。
- live: 是更老版的事件綁定,優(yōu)先實現(xiàn)了事件委托任柜,但實質(zhì)是把所有事件綁定在了 document 節(jié)點上卒废,綁定太深沛厨,需要層層傳遞到底層才觸發(fā),delegate 綁定方法是 live 的優(yōu)化版摔认。
- on: 其實就是上面三種綁定事件方法的統(tǒng)一逆皮,為推薦的使用方法。
-
off: on 事件的解綁级野。三種老方法的解綁
unbind
die
undelegate
其實都是通過 off 來實現(xiàn)的页屠。
推薦使用on
方法綁定事件,能夠做到事件委托蓖柔,也能處理事件冒泡辰企。
on(events,[selector],[data],fn)
的所有參數(shù):
events: 一個或多個用空格分隔的事件類型和可選的命名空間,如"click"或"keydown.myPlugin" 况鸣。
selector: 一個選擇器字符串用于過濾器的觸發(fā)事件的選擇器元素的后代牢贸。如果選擇的< null或省略,當(dāng)它到達(dá)選定的元素镐捧,事件總是觸發(fā)潜索。
data: 當(dāng)一個事件被觸發(fā)時要傳遞event.data給事件處理函數(shù)。
fn: 該事件被觸發(fā)時執(zhí)行的函數(shù)懂酱。 false 值也可以做一個函數(shù)的簡寫竹习,返回false。
其中列牺,可通過selector
參數(shù)來指定觸發(fā)的元素整陌,這樣就可以將事件綁定在父元素上,然后指定某一種 class 的子元素才能觸發(fā)瞎领,來實現(xiàn)事件委托泌辫。
參考: jQuery 中 bind()、on()九默、delegate() | 博客園
四震放、jQuery 如何展示/隱藏元素?
- 直接調(diào)用方法
show()
驼修、hide()
殿遂、toggle()
, 原理是設(shè)置display:none
乙各。 - 手動修改
css('display','none')
和css('display','block')
- 通過
toggleClass()
來切換 class 勉躺,這個 class 是display
相關(guān)的。
五觅丰、jQuery 動畫如何使用饵溅?
jQuery 動畫可以使用預(yù)設(shè)的幾個函數(shù)來實現(xiàn),想要更多自定義動畫妇萄,可以使用animate
蜕企。動畫函數(shù)有:
-
hide()
show()
-
fadeIn()
fadeOut()
-
slideDown()
slideUp()
上面的動畫主要都是實現(xiàn)元素的顯示隱藏咬荷,只不過有不同的效果,如:淡入淡出轻掩、滑動幸乒。每個函數(shù)都可以接收:動畫時間、動畫效果和動畫結(jié)束回調(diào)唇牧。值得注意的是罕扎,實現(xiàn)不是單純的dispaly:block/none
,jQuery 會記住元素的初始display
并且復(fù)原丐重,假如你原來設(shè)置了display: inline-block
腔召,那么也會還原成這個。
animate
自定義動畫函數(shù)扮惦,傳入的樣式對象作為最終一幀的動畫臀蛛,然后根據(jù)提供的動畫持續(xù)時間進(jìn)行變換⊙旅郏可鏈?zhǔn)秸{(diào)用浊仆,多個動畫組合。
六豫领、如何設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容抡柿?如何設(shè)置和獲取元素內(nèi)部文本?
- html()
該方法用于獲取和設(shè)置選中節(jié)點的 HTML 結(jié)構(gòu)等恐。當(dāng)是獲取 HTML 時洲劣,只返回第一個匹配到的節(jié)點的結(jié)構(gòu)。 - text()
該方法用于獲取和設(shè)置選中節(jié)點的純文本內(nèi)容鼠锈。當(dāng)獲取時,返回所有匹配到的元素的所有純文本拼接起來的字符串星著。設(shè)置的時候购笆,相當(dāng)于設(shè)置純文本,就算放入 HTML 結(jié)構(gòu)也會被轉(zhuǎn)化為文本虚循。
七同欠、如何設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容?如何設(shè)置和獲取元素屬性横缔?
- val()
獲取或者設(shè)置表單輸入內(nèi)容铺遂。 - attr() removeAttr()
atr()
獲取和設(shè)置元素屬性,removeAttr()
用來移除茎刚。