jQuery 能做什么索烹?
jQuery將JavaScript的代碼進(jìn)行了封裝工碾,處理了兼容性問題,提供API進(jìn)行調(diào)用,讓我們實(shí)現(xiàn)功能時不用再為兼容性而困擾百姓,少寫了許多代碼渊额。
jQuery是一個JavaScript函數(shù)庫,可以方便地:
- 選擇dom元素
- dom操作
- 事件處理
- 特效處理
- ajax
- 鏈?zhǔn)讲僮?/li>
jQuery 對象和 DOM 原生對象有什么區(qū)別垒拢?如何轉(zhuǎn)化旬迹?
區(qū)別:
DOM對象 :W3C標(biāo)準(zhǔn)用于操作文檔的API。具體點(diǎn)來說就是指 HTML 文本中的所有被標(biāo)簽標(biāo)記的東西 求类,在js里可以用 getElementById 等傳統(tǒng)的方法獲得的對象奔垦,擁有原生對象的屬性和方法。
jQuery對象:將DOM原生對象進(jìn)行封裝后得到的類數(shù)組對象
注意:
jQuery對象只能用jQuery對象的方法
DOM對象只能使用DOM對象的方法
轉(zhuǎn)化:
jquery提供了兩種方法將一個jquery對象轉(zhuǎn)換成一個DOM對象仑嗅,[index]和get(index)宴倍。
使用$(DOM對象)就可以將DOM對象轉(zhuǎn)化為jQuery對象
jQuery中如何綁定事件张症?bind仓技、unbind、delegate俗他、live脖捻、on、off都有什么作用兆衅?推薦使用哪種地沮?使用on綁定事件使用事件代理的寫法?
//bind用于綁定事件羡亩,古老寫法摩疑,不推薦
$(selector).bind(event,[data],function)
//unbind用于解綁事件,古老寫法畏铆,不推薦
$(selector).unbind(event,[function])
//delegate用于事件代理雷袋,古老寫法,不推薦
$(selector).delegate(childSelector,event,[data],function)
//live() 方法為被選元素附加一個或多個事件處理程序辞居,并規(guī)定當(dāng)這些事件發(fā)生時運(yùn)行的函數(shù)楷怒。不推薦使用
$(selector).live(event,[data],function)
.on( events [,selector ] [,data ], handler(eventObject) )
增加事件處理函數(shù)
- events:事件類型和可選的命名空間,或僅僅是命名空間瓦灶,比如"click", "keydown.myPlugin", 或者 ".myPlugin"鸠删,一個或多個
- selector:選擇器,用于過濾出被選中的元素中能觸發(fā)事件的后代元素贼陶。
- data:傳遞給事件處理函數(shù)的event.data
handler(eventObject):事件被觸發(fā)時的執(zhí)行函數(shù)刃泡。若該函數(shù)只是要執(zhí)行return false巧娱,該參數(shù)位置可以直接簡寫成 false
// 普通事件綁定,最簡單的用法
$('div').on('click', function(e){
console.log(this); //點(diǎn)擊的元素
console.log(e); // 事件烘贴,e.target 事件的對象
});
// 事件委托或者事件代理家卖,想讓div 下面所有的span綁定事件,可以把事件綁定到div上
$('div').on('click', 'span', function(e){
console.log(this);
console.log(e);
});
// 可以在綁定的時候給事件處理程序傳遞一些參數(shù)
$('div').on('click', {name: 'Byron', age: 24}, function(e){
console.log(e.data);
});
命名空間的作用:解綁事件時做一個區(qū)分
click.hello事件解綁庙楚,但是click事件不受影響
$('.box>ul').on('click',3,function(e){
console.log(e.data)
})
$('.box>ul').on('click.hello','li',function(){
console.log(this)
var str = $(this).text()
$('#wrap').text(str)
})
$('.box>ul').off('click.hello')
.off( events [, selector ] [, handler ] )
移除一個事件處理函數(shù)
jQuery 如何展示/隱藏元素上荡?
- .hide([duration ] [,easing ] [,complete ])
隱藏元素,沒有參數(shù)的時候等同于直接設(shè)置display:none屬性 - .show( [duration ] [, easing ] [, complete ] )
用于顯示元素馒闷,用法和hide類似 - .toggle( [duration ] [, easing ] [, complete ] )
toggle是切換的意思酪捡,用來切換元素的隱藏、顯示纳账,類似于toggleClass
事件處理套件也有一個名為.toggle()方法逛薇。哪一個被調(diào)用取決于傳遞的參數(shù)的設(shè)置
- duration:動畫持續(xù)多久
- easing:表示過渡使用哪種緩動函數(shù),jQuery自身提供"linear" 和 "swing"
- complete:在動畫完成時執(zhí)行的函數(shù),先完成動畫疏虫,后執(zhí)行函數(shù)
jQuery 動畫如何使用永罚?
漸變
- .fadeIn( [duration ] [, easing ] [, complete ] )
通過淡入的方式顯示匹配元素 - .fadeOut( [duration ] [, easing ] [, complete ] )
通過淡出的方式隱藏匹配元素 - .fadeTo( duration, opacity [, easing ] [, complete ] )
調(diào)整匹配元素的透明度,方法通過匹配元素的不透明度做動畫效果 - .fadeToggle( [duration ] [, easing ] [, complete ] )
滑動
- .slideDown( [duration ] [, easing ] [, complete ] )
用滑動動畫顯示一個匹配元素 - .slideUp( [duration ] [, easing ] [, complete ] )
用滑動動畫隱藏一個匹配元素 - .slideToggle( [duration ] [, easing ] [, complete ] )
用滑動動畫顯示或隱藏一個匹配元素
自定義動畫
- .animate( properties [, duration ] [, easing ] [, complete ] )
properties是一個CSS屬性和值的對象,動畫將根據(jù)這組對象移動卧秘。
如何設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容呢袱?如何設(shè)置和獲取元素內(nèi)部文本?
html([string])
讀寫兩用的方法翅敌,用于獲取/修改元素的innerHTML$('div').html()
//沒有參數(shù)羞福,獲取元素的innerHTML$('div').html('123')
//有參數(shù),參數(shù)內(nèi)容即為修改后的元素innerHTMLtext()
讀寫兩用的方法蚯涮,和html方法類似治专,用于獲取/修改元素的innerText值
如何設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容?如何設(shè)置和獲取元素屬性遭顶?
-
.val([value])</br>
讀寫雙用的方法张峰,用來處理input的value,設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容,當(dāng)方法沒有參數(shù)的時候返回input的value值棒旗,當(dāng)傳遞了一個參數(shù)的時候喘批,方法修改input的value值為參數(shù)值
$('input').val() //沒有參數(shù)的時候返回input的value值
$('input').val('newValue'); //當(dāng)傳遞了一個參數(shù)的時候,將參數(shù)值設(shè)為input的value值
$('input')[0].value = "hello" 用原生DOM的方式設(shè)置值
-
.attr(attributeName)</br>
獲取元素的屬性嗦哆。
<input type="text" value="hello">
<script>
console.log($('input').attr("type")) //text
</script>
-
.removeAttr(attributeName)</br>
移除特定元素的某個屬性谤祖。
為匹配的元素集合中的每個元素中移除一個屬性