題目1: jQuery 能做什么?
- 選擇網(wǎng)頁元素
- 改變結(jié)果集
- 元素的操作:取值和賦值
- 元素的操作:移動(dòng)
- 元素的操作:復(fù)制、刪除和創(chuàng)建
- 工具方法
- 事件操作
- 特殊效果
- AJAX
題目2: jQuery 對(duì)象和 DOM 原生對(duì)象有什么區(qū)別?如何轉(zhuǎn)化?
DOM原生對(duì)象就是一個(gè)對(duì)象,jQuery對(duì)象是一個(gè)類數(shù)組對(duì)象。
jQuery對(duì)象轉(zhuǎn)化成DOM對(duì)象我們可以通過類數(shù)組下標(biāo)的獲取方式或者get方法獲取指定index的DOM對(duì)象
$('div')[0]
$('div').get()
DOM對(duì)象轉(zhuǎn)化成jQuery對(duì)象只需用$()把DOM對(duì)象封裝起來,就可得到j(luò)Query對(duì)象
var div = document.querySelector('div')
$(div)
題目3:jQuery中如何綁定事件?bind、unbind、delegate、live、on、off都有什么作用?推薦使用哪種?使用on綁定事件使用事件代理的寫法?
jQuery中可以使用bind delegate live on來綁定事件
bind():為被選元素添加一個(gè)或多個(gè)事件處理程序,并規(guī)定事件發(fā)生時(shí)運(yùn)行的函數(shù)。(從jQuery 3.0 開始已被棄用,用.on()代替)
unbind():移除所有的或被選的事件處理程序,或者當(dāng)事件發(fā)生時(shí)終止指定函數(shù)的運(yùn)行,(從jQuery 3.0 開始已被棄用,用.off()代替)
delegate():為匹配的元素添加一個(gè)或多個(gè)事件處理程序,并規(guī)定當(dāng)這些事件發(fā)生時(shí)運(yùn)行的函數(shù),(從jQuery 3.0 開始已被棄用,用.on()代替)
live():為被選元素附加一個(gè)或多個(gè)事件處理程序,并規(guī)定當(dāng)這些事件發(fā)生時(shí)運(yùn)行的函數(shù)。(從jQuery 1.7開始已被棄用,用.on()代替)
on():在被選元素及子元素上添加一個(gè)或多個(gè)事件處理程序。(推薦使用)
off():用于移除通過 on() 方法添加的事件處理程序。(推薦使用)
使用on綁定事件使用事件代理:
$('ul.musicList').on('click','li',function() {
console.log($(this).text())
})
題目4:jQuery 如何展示/隱藏元素?
1 為元素添加或移除新的class,提前設(shè)置好class的隱藏屬性
.active {
display:none;
}
$('button').toggleClass('active')
2 使用toggle()來切換展示和隱藏元素
$('button').toggle()
3 使用show() 和 hide()來展示和隱藏元素
$('button').show();
$('button').hide();
類似的還可以使用slideUp()和slideDown()以及fadeIn()和 fadeOut()來實(shí)現(xiàn)隱藏。
題目5: jQuery 動(dòng)畫如何使用?
.animate( properties [, duration ] [, easing ] [, complete ] )
properties:一個(gè)CSS屬性和值的對(duì)象,動(dòng)畫將根據(jù)這組對(duì)象移動(dòng)。
duration (默認(rèn): 400):一個(gè)字符串或者數(shù)字決定動(dòng)畫將運(yùn)行多久。有三種預(yù)定速度的字符串("slow", "normal", 或 "fast")或表示動(dòng)畫時(shí)長(zhǎng)的毫秒數(shù)值(如:1000)
easing (默認(rèn): swing):一個(gè)字符串,表示過渡使用哪種緩動(dòng)函數(shù)
complete:在動(dòng)畫完成時(shí)執(zhí)行的函數(shù)
百葉窗實(shí)現(xiàn)效果
題目6:如何設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容?如何設(shè)置和獲取元素內(nèi)部文本?
<div class="container">
<ul class="news">
<li>1.China landslide leaves at least 140 missing in Sichuan</li>
<li>2.what you can learn from einsteins quirky habits</li>
<li>3.England v South Africa: Tourists level T20 series with dramatic three-run win</li>
<li>4.Henry Blofeld: Test Match Special commentator calls time on career</li>
<li>5.Fabinho: Manchester United move would tempt Monaco midfielder</li>
</ul>
<p>是滴是滴</p>
用html()獲取集合中第一個(gè)匹配元素的HTML內(nèi)容 或 設(shè)置每一個(gè)匹配元素的html內(nèi)容。
<script>
$('div.container').html()//獲取class為container的div里的html內(nèi)容
$('div.container').html('<p>This is a new paragraph</p>')//div里的html內(nèi)容會(huì)被設(shè)置的內(nèi)容取代
</script>
用text()獲取匹配元素集合中每個(gè)元素的文本內(nèi)容結(jié)合,包括他們的后代,或設(shè)置匹配元素集合中每個(gè)元素的文本內(nèi)容為指定的文本內(nèi)容。
$('div.container').text()//會(huì)得到div自身以及所有子元素的文本內(nèi)容
$('.new>li:frist-child').text('123')//第一個(gè)的文本內(nèi)容會(huì)替換成123
題目7:如何設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容?如何設(shè)置和獲取元素屬性?
var $input = $('#input');
$input.val('123') //設(shè)置input的value
$input.val() //獲取input的value
$input.attr('type') //獲取input的type屬性
$input.attr('type','password') //設(shè)置input的type屬性為password