讀jQuery官方文檔:$(document).ready()與避免沖突

$(document).ready()


通常你想在DOM結(jié)構(gòu)加載完畢之后才執(zhí)行相關腳本启盛。使用原生JavaScript,你可能調(diào)用window.onload = function() { ... }, 但是這個辦法的你只能夠調(diào)用一次,而且需要等DOM結(jié)構(gòu)完全加載完畢僵闯,包括圖片樣式等靜態(tài)文件所有夾在完畢才會開始執(zhí)行onload函數(shù)里面的代碼卧抗。

jQuery中提供了一種更好的辦法:

$(document).ready(function() {
    console.log('ready!');
});

與onload函數(shù)不同的是,這個辦法可以被調(diào)用無限多次鳖粟,而且不需要等待頁面元素完全下載完畢才執(zhí)行代碼社裆,即DOM結(jié)構(gòu)渲染完畢后馬上執(zhí)行代碼。

你可能見過一些經(jīng)驗豐富的開發(fā)者使用下面的簡寫形式:


$(function() {
    console.log('ready!');
});

除了傳遞匿名函數(shù)向图,你也可以選擇傳遞命名函數(shù):

function readyFn(jQuery) {
    //do something...
}

$(document).ready(readyFn);
//或者:
$(window).load(readyFn);

避免與其他庫沖突


1泳秀、No-Conflict模式
jQuery庫是被包含在jQuery全局變量中的,而$jQuery的快捷方式榄攀,也就是$默認也是全局變量嗜傅。如果你在使用其他包含$全局變量的庫(如prototype,YUI)檩赢,你可能面臨變量名沖突吕嘀,不過jQuery提供了避免這種沖突的辦法。

<script src="prototype.js"></script>
<script src="jquery.js"></script>

<script>
var $j = jQuery.noConflict();
//現(xiàn)在$不再是jQuery的別名贞瞒,$j替換了$成為了jQuery的新別名

$j(document).ready(function() {
  $j('div').hide();
});

//現(xiàn)在$是prototype的別名
window.onload = function() {
  var mainDiv = $('main');
};
</script>

上面的代碼中的$會回復到它本身的庫的用途偶房。你依然可以通過jQuery或者$j的方式使用jQuery庫。你可以隨意更改jQuery的別名军浆, 比如`jq', '$J', 'awesomeQuery'等棕洋。

另外,如果你不想給jQuery命名新的別名(你依然想要用$)瘾敢,你依然有辦法可以避免沖突拍冠。

<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
jQuery.noConflict();

jQuery( document ).ready(function( $ ) {
   //這個作用域里的$都是jQuery的別名
  $('div').hide();
});

//全局作用域的$是prototype的
window.onload = function() {
  var mainDiv = $('main');
};
</script>

這些技巧基本上可以完成日常需求了尿这。

2簇抵、 引入其他庫之前引入jQuery

在其他庫前引入jQuery,你需要使用jQuery來調(diào)用jQuery庫射众,$別稱屬于其他庫碟摆。

<script src="jquery.js"></script>
<script src="prototype.js"></script>

//通過jQuery全稱調(diào)用jQuery庫
jQuery(document).ready(function() {
  jQuery('div').hide();
});

//由于prototype在jQuery之后引入,$別名屬于prototype
window.onload = function() {
  var mainDiv = $('main');
};

3叨橱、 總結(jié)

創(chuàng)建新別名

jQuery.noConflict()方法做了兩件事典蜕,一是返回了jQuery對象的引用,你可以用來賦值給自定義的變量罗洗,如($jq)愉舔;二是,刪除了默認的$別稱伙菜,把$別名歸還給其他庫:

<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
  //將$別名歸還prototype轩缤,創(chuàng)建一個新的別名$jq
  var $jq = jQuery.noConflict();
</script>

使用立即調(diào)用函數(shù)表達式:

你可以創(chuàng)建一個立即調(diào)用函數(shù)表達式,然后在表達式里使用$作為jQuery的別名:

<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
  jQuery.noConflict();
  (function( $ ) {
    $('div').remove();
  })( jQuery );
</script>

注意,如果你使用這個技巧火的,你將不能夠在立即調(diào)用函數(shù)表達式里面使用$作為prototype的別名壶愤。

給jQuery(document).ready()傳遞參數(shù)

<script src="jquery.js"></script>
<script src="prototype.js"></script>
<script>
  jQuery(document).ready(function( $ ) {
    //do something...
  });
</script>

或者

<script src="jquery.js"></script>
<script src="prototype.js"></script>
<script>
  jQuery(function( $ ) {
    //do something...
  });
</script>
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市馏鹤,隨后出現(xiàn)的幾起案子征椒,更是在濱河造成了極大的恐慌,老刑警劉巖湃累,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勃救,死亡現(xiàn)場離奇詭異,居然都是意外死亡治力,警方通過查閱死者的電腦和手機剪芥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琴许,“玉大人税肪,你說我怎么就攤上這事“裉铮” “怎么了益兄?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長箭券。 經(jīng)常有香客問我净捅,道長,這世上最難降的妖魔是什么辩块? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任蛔六,我火速辦了婚禮,結(jié)果婚禮上废亭,老公的妹妹穿的比我還像新娘国章。我一直安慰自己,他們只是感情好豆村,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布液兽。 她就那樣靜靜地躺著,像睡著了一般掌动。 火紅的嫁衣襯著肌膚如雪四啰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天粗恢,我揣著相機與錄音柑晒,去河邊找鬼。 笑死眷射,一個胖子當著我的面吹牛匙赞,可吹牛的內(nèi)容都是我干的恋追。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼罚屋,長吁一口氣:“原來是場噩夢啊……” “哼苦囱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起脾猛,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤撕彤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后猛拴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體羹铅,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年愉昆,在試婚紗的時候發(fā)現(xiàn)自己被綠了职员。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡跛溉,死狀恐怖焊切,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芳室,我是刑警寧澤专肪,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站堪侯,受9級特大地震影響嚎尤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伍宦,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一芽死、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧次洼,春花似錦关贵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至势篡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間模暗,已是汗流浹背禁悠。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留兑宇,地道東北人碍侦。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瓷产。 傳聞我的和親對象是個殘疾皇子站玄,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

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

  • 原文鏈接 http://blog.poetries.top/2016/10/20/review-jQuery 關注...
    程序員poetry閱讀 16,650評論 18 503
  • 1.JQuery 基礎 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式。設計者無需花費時間糾纏JS復雜的高級特性濒旦。 1....
    LaBaby_閱讀 1,350評論 0 2
  • 1.幾種基本數(shù)據(jù)類型?復雜數(shù)據(jù)類型?值類型和引用數(shù)據(jù)類型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類型:Undefined株旷、Nul...
    極樂君閱讀 5,527評論 0 106
  • 為什么很多人敷面膜臉部會有刺痛感梯嗽?是不是覺得很疑惑齿尽?又不是敏感肌,為什么會這樣灯节? 敷面膜的刺痛感多半來自以下幾個原...
    華麗轉(zhuǎn)身_eda6閱讀 895評論 0 0
  • 我 現(xiàn)在 知道 你 為什么 喜歡 整理 房間 因為 可以 掃除 內(nèi)心 多余 雜念 只是 不知 是否 也 把我 從你...
    于斯人閱讀 158評論 0 0