jQuery選擇器_Dom操作_樣式_事件處理_動畫

jQuery選擇器_ Dom操作_ 樣式_ 事件處理_動畫

jQuery 能做什么

jQuery是一款快速而簡潔的javascript的庫,核心是構(gòu)建與css選擇器上,用來操作DOM元素,通過鏈?zhǔn)秸{(diào)用,兼容性好,API 友好,功能強(qiáng)大陋气,與時俱進(jìn)

  • HTML元素選取
  • HTML元素的操作:取值和賦值、移動引润、復(fù)制巩趁、刪除和創(chuàng)建等
  • CSS操作
  • 事件操作
  • 特殊效果,如JavaScript 特效和動畫
  • HTML DOM 遍歷和修改
  • 工具方法
  • AJAX
  • Utilities
jQuery 對象和 DOM 原生對象有什么區(qū)別淳附?如何轉(zhuǎn)化
  • 對于jQuery對象只能使用jQuery對象的API
  • 對于原生對象只能使用原生對象的 API

轉(zhuǎn)化

  • 對于原生轉(zhuǎn)化為jQuery,只需在外面加上一層$符號
$(document.querySelector("#box"))
就可以變?yōu)閖Query對象,就可以使用jQuery對象的API了
  • 對于jQuery對象轉(zhuǎn)換為原生對象,只需要加個[下標(biāo)]
$("#box .box")[0]
,就可以使用j原生對象的API了

問題是:那我們又不想變成原生對象,又想取值怎么辦呢?
$("#box .box").eq(0)  //.eq(index)
jQuery中如何綁定事件议慰?bind、unbind奴曙、delegate别凹、live、on洽糟、off都有什么作用炉菲?推薦使用哪種?使用on綁定事件使用事件代理的寫法

jQuery提供了四種方法進(jìn)行事件監(jiān)聽坤溃,on拍霜,bind,delegate薪介,one(live已經(jīng)棄用)祠饺,相應(yīng)的解除監(jiān)聽off,unbind汁政,undelegate道偷。

$('a').bind('click', handle);//給$('a')的‘click’事件綁定執(zhí)行函數(shù)
$('a').unbind(['click']);//給$('a')解除所有綁定事件【‘click’事件】

jQuery 掃描文檔找到所有 $(‘a(chǎn)’) 元素缀旁,然后給每一個找到的元素的 click 事件綁定處理函數(shù)。

$('a').live('click',handle });// $('a')綁定‘click’事件试疙,執(zhí)行函數(shù)
$('a').die('click',handle });// $('a')解除及‘click’事件執(zhí)行函數(shù)

jQuery綁定處理函數(shù)到 $(document) 元素诵棵,并把 ‘click’ 和 ‘a(chǎn)’ 作為函數(shù)的參數(shù)抠蚣。有事件冒泡到document節(jié)點(diǎn)的時候祝旷,檢查這個事件是不是 click 事件,target element能不能匹配 ‘a(chǎn)’ css選擇器嘶窄,如果兩個條件都是true怀跛,處理函數(shù)執(zhí)行

$('a', $('#container')[0]).live(...);

live方法也可以綁定到指定的元素(或者說“上下文(context)”)而不用綁定到document.

$('#container').delegate('a', 'click', handle);//$('#container')綁定‘click’事件,執(zhí)行函數(shù)
$('#container').undelegate('a', 'click', handle);//$('#container')解除‘click’事件和執(zhí)行函數(shù)

jQuery掃描文檔找到 $(‘#container’)柄冲,綁定處理函數(shù)到他的 click 事件吻谋,’a’ css選擇器作為函數(shù)的參數(shù)。當(dāng)有事件冒泡到 $(‘#container’)现横,檢查事件是不是 click漓拾,并檢查target element是不是匹配css選擇器,如果兩者都符合戒祠,執(zhí)行函數(shù)骇两。

one()該方法綁定的事件觸發(fā)一次后自動刪除

$('.class').on( events [,selector ] [,data ], handler);//$('.class')綁定事件
$('.class').off()$('.class')解除事件

on實(shí)現(xiàn)事件委托很簡單, '.class'為父元素姜盈,on后面括號里的selector 參數(shù)為子元素低千,當(dāng)‘.class’的事件觸發(fā)時,判斷事件來源是否子元素selector馏颂,若是示血,則執(zhí)行處理函數(shù),從而實(shí)現(xiàn)事件委托救拉。
on是最基本的事件綁定方法难审,bind,delegate亿絮,live都是調(diào)用on來綁定事件告喊,因此,推薦使用on來綁定事件壹无。

//delegate源碼
delegate: function( selector, types, data, fn ) {
  return this.on( types, selector, data, fn );
}
//live源碼
live: function( types, data, fn ) {
  jQuery( this.context ).on( types, this.selector, data, fn );
return this;
}
//bind源碼
bind: function( types, data, fn ) {
  return this.on( types, null, data, fn );
}
jQuery 如何展示/隱藏元素
  • 通過設(shè)置css的display屬性來實(shí)現(xiàn)
var $h1 = $('h1')
$h1.css('display', 'block')
$h1.css('display', 'none')
  • 通過增加或刪除class來實(shí)現(xiàn)
//css部分
.status{
    display: none;
}

//js部分
var $h1 = $('h1')
$h1.addClass('status') //隱藏元素
$h1.removeClass('status') //展示元素
  • 通過jQuery動畫的hide葱绒、show、toggle方法實(shí)現(xiàn)
var $h1 = $('h1')
$h1.hide()//隱藏
$h1.show()//展示
$h1.toggle()//隱藏

其中toggle方法用于切換元素的隱藏斗锭、顯示地淀。

jQuery 動畫如何使用
duration:動畫持續(xù)多久
easing:表示過渡使用哪種緩動函數(shù),jQuery自身提供"linear" 和 "swing"
complete:在動畫完成時執(zhí)行的函數(shù)
opacity:不透明度
  • 基礎(chǔ)用法:
    • 隱藏元素
    .hide([duration ] [,easing ] [,complete ])
    
  • 顯示元素
    • 隱藏元素
    .hide([duration ] [,easing ] [,complete ])
    
    • 顯示元素
    .show( [duration ] [, easing ] [, complete ])
    
    • 切換元素
    .toggle( [duration ] [, easing ] [, complete ] )
    
  • 漸變
    • 淡入顯示
    .fadeIn( [duration ] [, easing ] [, complete ] )
    
    • 淡出隱藏
    .fadeOut( [duration ] [, easing ] [, complete ] )
    
    • 調(diào)整匹配元素的透明度岖是,方法通過匹配元素的不透明度做動畫效果
    .fadeTo( duration, opacity [, easing ] [, complete ] )
    
    • 調(diào)整匹配的元素的不透明度動畫來顯示或隱藏它們帮毁,方法執(zhí)行匹配元素的不透明度動畫实苞。當(dāng)被可見元素調(diào)用時,元素不透明度一旦達(dá)到0烈疚,display樣式屬性設(shè)置為none 黔牵,元素不再影響頁面的布局。
    .fadeToggle( [duration ] [, easing ] [, complete ] )
    
  • 自定義
    • properties是一個CSS屬性和值的對象,動畫將根據(jù)這組對象移動爷肝。
    .animate( properties [, duration ] [, easing ] [, complete ] )
    
    • options是一組包含動畫選項(xiàng)的值的集合猾浦。
    .animate( properties, options )
    
    • 當(dāng)一個元素調(diào)用.stop(),當(dāng)前正在運(yùn)行的動畫(如果有的話)立即停止灯抛。
    .stop( [clearQueue ] [, jumpToEnd ] )
    
如何設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容金赦?如何設(shè)置和獲取元素內(nèi)部文本
  • 用html方法獲取/修改元素的innerHTML
    • 沒有傳遞參數(shù)時直接返回元素的innerHTML
    $('div').html()
    
    • 傳遞了一個string參數(shù)時修改元素的innerHTML為參數(shù)值
    $('div').html('hello world')
    
  • 用text方法獲取/修改元素的innerText
    • 沒有傳遞參數(shù)時直接返回元素的innerText
    $('div').text()
    
    • 傳遞了一個string參數(shù)時修改元素的innerText為參數(shù)值
    $('div').text('hello world')
    

這種讀寫兩用的方法很多,原理都類似

  1. 如果結(jié)果是多個進(jìn)行賦值操作的時候會給每個結(jié)果都賦值
  2. 如果結(jié)果多個对嚼,獲取值的時候夹抗,返回結(jié)果集中的第一個對象的相應(yīng)值
如何設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容?如何設(shè)置和獲取元素屬性
  • 用val方法設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容
    也是一個讀寫雙用的方法纵竖,用來處理input的value漠烧,當(dāng)方法沒有參數(shù)的時候返回input的value值,當(dāng)傳遞了一個參數(shù)的時候靡砌,方法修改input的value值為參數(shù)值
$('input').val()//獲取用戶輸入或選擇的內(nèi)容
$('input').val('newValue');//設(shè)置用戶輸入或選擇的內(nèi)容
  • 用attr和prop方法來設(shè)置和獲取元素屬性
$('div').attr()//獲取元素屬性
$('div').prop()//獲取元素屬性
$('div').attr('color','red')//設(shè)置元素屬性
$('div').prop({
  background: "yellow",
  font-size: "3em"
})//設(shè)置元素屬性

其中:attr多用于html原有屬性已脓,prop多用于自定義屬性

使用 jQuery實(shí)現(xiàn)如下效果

預(yù)覽

使用 jQuery 實(shí)現(xiàn)如下效果

預(yù)覽

實(shí)現(xiàn)如下效果

預(yù)覽

模仿視頻6,完成 左右切換的 Tab 效果

預(yù)覽

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乏奥,一起剝皮案震驚了整個濱河市摆舟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邓了,老刑警劉巖恨诱,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異骗炉,居然都是意外死亡照宝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門句葵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厕鹃,“玉大人,你說我怎么就攤上這事乍丈〖敛辏” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵轻专,是天一觀的道長忆矛。 經(jīng)常有香客問我,道長请垛,這世上最難降的妖魔是什么催训? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任洽议,我火速辦了婚禮,結(jié)果婚禮上漫拭,老公的妹妹穿的比我還像新娘亚兄。我一直安慰自己,他們只是感情好采驻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布审胚。 她就那樣靜靜地躺著,像睡著了一般挑宠。 火紅的嫁衣襯著肌膚如雪菲盾。 梳的紋絲不亂的頭發(fā)上颓影,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天各淀,我揣著相機(jī)與錄音,去河邊找鬼诡挂。 笑死碎浇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的璃俗。 我是一名探鬼主播奴璃,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼城豁!你這毒婦竟也來了苟穆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤唱星,失蹤者是張志新(化名)和其女友劉穎雳旅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體间聊,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡攒盈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哎榴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片型豁。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖尚蝌,靈堂內(nèi)的尸體忽然破棺而出迎变,到底是詐尸還是另有隱情,我是刑警寧澤飘言,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布衣形,位于F島的核電站,受9級特大地震影響热凹,放射性物質(zhì)發(fā)生泄漏泵喘。R本人自食惡果不足惜泪电,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纪铺。 院中可真熱鬧相速,春花似錦、人聲如沸鲜锚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芜繁。三九已至旺隙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間骏令,已是汗流浹背蔬捷。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留榔袋,地道東北人周拐。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像凰兑,于是被迫代替她去往敵國和親妥粟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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