jQuery基礎(chǔ)核心

一根资、代碼風(fēng)格

? ? ? ? 在jQuery程序中热芹,不管是頁面元素的選擇、內(nèi)置的功能函數(shù)荞雏,都是美元符號“$”來起始的。而這個“$”就是jQuery當(dāng)中最重要且獨有的對象:jQuery對象平酿,所以我們在頁面元素選擇或執(zhí)行功能函數(shù)的時候可以這么寫:

? ? ? ? ? ? ? ? ? ? $(function () {}); //執(zhí)行一個匿名函數(shù)

? ? ? ? ? ? ? ? ? ? $(‘#box’); //進(jìn)行執(zhí)行的ID元素選擇

? ? ? ? ? ? ? ? ? ? $(‘#box’).css(‘color’,‘red’); //執(zhí)行功能函數(shù)

? ? ? ?由于$本身就是jQuery對象的縮寫形式凤优,那么也就是說上面的三段代碼也可以寫成如下形式:

? ? ? ? ? ? ? ? ? ? ?jQuery(function () {});

? ? ? ? ? ? ? ? ? ? ?jQuery(‘#box’);

? ? ? ? ? ? ? ? ? ? ?jQuery(‘#box’).css(‘color’,‘red’);

? ? ? ? 在執(zhí)行功能函數(shù)的時候,我們發(fā)現(xiàn).css()這個功能函數(shù)并不是直接被“$”或jQuery對象調(diào)用執(zhí)行的蜈彼,而是先獲取元素后筑辨,返回某個對象再調(diào)用.css()這個功能函數(shù)。那么也就是說幸逆,這個返回的對象其實也就是jQuery對象棍辕。

? ? ? ? $().css(‘color’, ’red’); //理論上合法暮现,但實際上缺少元素而報錯值得一提的是,執(zhí)行了.css()這個功能函數(shù)后楚昭,最終返回的還是jQuery對象栖袋,那么也就是說,jQuery的代碼模式是采用的連綴方式抚太,可以不停的連續(xù)調(diào)用功能函數(shù)塘幅。

? ? ? ? $('#box').css('color',?'red').css('font-size', '50px'); //連綴

? ? ? ? jQuery中代碼注釋和JavaScript是保持一致的,有兩種最常用的注釋:

? ? ? ?單行使用“//...”尿贫,

? ? ? ?多行使用“/* ... */”电媳。

? ? ? ? //$('#box').css('color','red');

二、加載方式

? ? ? ? 我們在之前的代碼一直在使用$(function () {});這段代碼進(jìn)行首尾包裹庆亡,那么為什么必須要包裹這段代碼呢匾乓?原因是我們jQuery庫文件是在body元素之前加載的,我們必須等待所有的DOM元素加載后又谋,延遲支持DOM操作拼缝,否則就無法獲取到。

在延遲等待加載搂根,JavaScript提供了一個事件為load珍促,方法如下:

?window.onload = function () {}; //JavaScript等待加載

?$(document).ready(function () {}); //jQuery等待加載


load和ready的區(qū)別


? ? ? ? 在實際應(yīng)用中,我們都很少直接去使用window.onload剩愧,因為他需要等待圖片之類的大

型元素加載完畢后才能執(zhí)行JS代碼。所以娇斩,最頭疼的就是網(wǎng)速較慢的情況下仁卷,頁面已經(jīng)全

面展開,圖片還在緩慢加載犬第,這時頁面上任何的JS交互功能全部處在假死狀態(tài)锦积。并且只能

執(zhí)行單次在多次開發(fā)和團(tuán)隊開發(fā)中會帶來困難。

三歉嗓、對象互換

? ? ? ?jQuery對象雖然是jQuery庫獨有的對象丰介,但它也是通過JavaScript進(jìn)行封裝而來的。我們可以直接輸出來得到它的信息鉴分。

? ? ? ? ? ? ? ? ?alert($); //jQuery對象方法內(nèi)部

? ? ? ? ? ? ? ? ?alert($());

? ? ? ? ? ? ? ? //jQuery對象返回的對象哮幢,還是jQuery

? ? ? ? ? ? ? ? alert($('#box'));

? ? ? ? ? ? ? ?//包裹ID元素返回對象,還是jQuery

? ? ? ?從上面三組代碼我們發(fā)現(xiàn):只要使用了包裹后志珍,最終返回的都是jQuery對象橙垢。這樣的好處顯而易見,就是可以連綴處理伦糯。但有時柜某,我們也需要返回原生的DOM對象嗽元,比如:

? ? ? ? ? ? ? ? ? ?alert(document.getElementById('box'));

? ? ? ? ? ? ? ? ? //[object HTMLDivElement]

? ? ? ?jQuery想要達(dá)到獲取原生的DOM對象,可以這么處理:

? ? ? ? ? ? ? ? ?alert($('#box').get(0)); //ID元素的第一個原生DOM

? ? ? ? ? 從上面get(0)喂击,這里的索引看出剂癌,jQuery是可以進(jìn)行批量處理DOM的,這樣可以在很多需要循環(huán)遍歷的處理上更加得心應(yīng)手翰绊。

四珍手、多個庫之間的沖突

? ? ? ? 當(dāng)一個項目中引入多個第三方庫的時候,由于沒有命名空間的約束(命名空間就好比同一個目錄下的文件夾一樣辞做,名字相同就會產(chǎn)生沖突)琳要,庫與庫之間發(fā)生沖突在所難免。那么秤茅,既然有沖突的問題稚补,為什么要使用多個庫呢?原因是jQuery只不過是DOM操作為主的庫框喳,方便我們?nèi)粘eb開發(fā)课幕。但有時,我們的項目有更多特殊的功能需要引入其他的庫五垮,比如用戶界面UI方面的庫乍惊,游戲引擎方面的庫等等一系列。而很多庫放仗,比如prototype润绎、還有我們JavaScript課程開發(fā)的Base庫,都使用“$”作為

基準(zhǔn)起始符诞挨,如果想和jQuery共容有兩種方法:

? ? ? ? ? ?1.將jQuery庫在Base庫之前引入莉撇,那么“$”的所有權(quán)就歸Base庫所有,而jQuery可以直接用jQuery對象調(diào)用惶傻,或者創(chuàng)建一個“$$”符給jQuery使用棍郎。

? ? ? ? ? var $$ = jQuery; //創(chuàng)建一個$$的jQuery對象

? ? ? ? ? $(function () { //這是Base的$

? ? ? ? ? ? ? ? ? ? ? alert($('#box').ge(0)); //這是Base的$

? ? ? ? ? ? ? ? ? ? ? alert($$('#box').width()); //這是jQuery的$$

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? });

? ? ? ? ? ? 2.如果將jQuery庫在Base庫之后引入,那么“$”的所有權(quán)就歸jQuery庫所有银室,而Base庫將會沖突而失去作用涂佃。這里,jQuery提供了一個方法:

? ? ? ? ? ? ? ? ? ? ? ?jQuery.noConflict(); //將$符所有權(quán)剔除

? ? ? ? ? ? ? ? ? ? ? ?var $$ = jQuery;

? ? ? ? ? ? ? ? ? ? ?$(function () {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?alert($('#box').ge(0));

? ? ? ? ? ? ? ? ? ? ? ? ? ? alert($$('#box').width());

? ? ? ? ? ? ? ? ? ? ? ?});


? ?謝謝閱讀蜈敢!

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辜荠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扶认,更是在濱河造成了極大的恐慌侨拦,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辐宾,死亡現(xiàn)場離奇詭異狱从,居然都是意外死亡膨蛮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門季研,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敞葛,“玉大人,你說我怎么就攤上這事与涡∪切常” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵驼卖,是天一觀的道長氨肌。 經(jīng)常有香客問我,道長酌畜,這世上最難降的妖魔是什么怎囚? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮桥胞,結(jié)果婚禮上恳守,老公的妹妹穿的比我還像新娘。我一直安慰自己贩虾,他們只是感情好催烘,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缎罢,像睡著了一般伊群。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屁使,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天在岂,我揣著相機(jī)與錄音,去河邊找鬼蛮寂。 笑死,一個胖子當(dāng)著我的面吹牛易茬,可吹牛的內(nèi)容都是我干的酬蹋。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼抽莱,長吁一口氣:“原來是場噩夢啊……” “哼范抓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起食铐,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤匕垫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后虐呻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體象泵,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡寞秃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了偶惠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片春寿。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖忽孽,靈堂內(nèi)的尸體忽然破棺而出绑改,到底是詐尸還是另有隱情,我是刑警寧澤兄一,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布厘线,位于F島的核電站,受9級特大地震影響出革,放射性物質(zhì)發(fā)生泄漏造壮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一蹋盆、第九天 我趴在偏房一處隱蔽的房頂上張望费薄。 院中可真熱鬧,春花似錦栖雾、人聲如沸楞抡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽召廷。三九已至,卻和暖如春账胧,著一層夾襖步出監(jiān)牢的瞬間竞慢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工治泥, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留筹煮,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓居夹,卻偏偏與公主長得像败潦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子准脂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

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

  • 代碼風(fēng)格 在jquery程序中劫扒,不管是頁面元素的選擇還是內(nèi)置的功能函數(shù)都是美元("$")來開始的。而這個"$"就是...
    我擁抱著我的未來閱讀 208評論 0 0
  • 一.什么是jQuery jQuery是一個JavaScript庫,它通過封裝原生的JavaScript函數(shù)得到一整...
    love2013閱讀 581評論 0 4
  • 一狸膏、樣式篇 第1章 初識jQuery (1)環(huán)境搭建 進(jìn)入官方網(wǎng)站獲取最新的版本 http://jquery.co...
    凜0_0閱讀 3,398評論 0 44
  • <a name='html'>HTML</a> Doctype作用沟饥?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別? (1)、<...
    clark124閱讀 3,498評論 1 19
  • 學(xué)了這個專業(yè)你就成了專業(yè)人士广料? 最近聽到了很多人都在重復(fù)這么一句話“你是科班出身,又讀的是相關(guān)專業(yè)的遮晚,所以你應(yīng)該是...
    優(yōu)媽讀繪本閱讀 654評論 0 0