首頁 web前端 js教程 分享jQuery中noConflict()的用法

分享jQuery中noConflict()的用法

Jun 20, 2017 pm 03:14 PM
jquery 分享 用法

這篇文章主要介紹了jQuery中noConflict()用法,實例分析了noConflict()的功能、定義及相關使用技巧,需要的朋友可以參考下

#本文實例講述了jQuery中noConflict()用法。分享給大家供大家參考。具體分析如下:

jQuery預設使用"$"運算子,$ 符號只是window.jQuery 物件的一個引用,jQuery.noConflict() ,這個函數將變數$的控制權讓渡給第一個實現它的那個庫。這有助於確保jQuery不會與其他函式庫的$物件發生衝突。在執行這個函數後,就只能使用jQuery變數來存取jQuery物件。例如,要用到$("p p")的地方,就必須換成jQuery("p p")。

一、"$"運算子

1、jQuery預設使用"$"運算符,prototype等其他框架也是使用"$",於是,如果jQuery在其他函式庫之後引入,那麼jQuery將獲得"$"使用權。這樣的情況也很容易理解,畢竟JS是從上到下流式執行的。

2、如果在其他使用"$"的函式庫之前引入jQuery,那麼jQuery將不會佔用"$"。

提示:當其他 JavaScript 函式庫為其函數使用 $ 時,此方法很有用。

我們在jquery中取得變數都會使用到$,但是還有很多外掛都是可以使用$這個符號了,如果我們同時要引用就會導致出現問題了,jquery為了防止這種事情發生就引入了noconflict()

二、jQuery.noConflict的定義
 
jQuery.noConflict 方法包含一個可選的布林參數,用來決定移交$ 所引用的同時是否移交jQuery 物件本身:


jQuery.noConflict([removeAll])
登入後複製

函數的說明:

預設情況下,執行noConflict 會將變數$ 的控制權移交給第一個產生$ 的函式庫;當removeAll 設定為true 時,執行noConflict 則會將$ 和jQuery 物件本身的控制權全部移交給第一個產生他們的函式庫。
 
三、jQuery.noConflict原始碼分析
 
jQuery 原始碼開頭,首先做的一件事是這樣的:


#
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
登入後複製

容易理解的是,jQuery 透過兩個私有變數映射了window 環境下的jQuery 和$ 兩個對象,以防止變數被強行覆蓋。一旦noConflict 方法被調用,則透過_jQuery, _$, jQuery, $ 四者之間的差異,來決定控制權的移交方式,具體的程式碼如下:


noConflict: function( deep ) {
 if ( window.$ === jQuery ) {
 window.$ = _$;
 }
 if ( deep && window.jQuery === jQuery ) {
 window.jQuery = _jQuery;
 }
 return jQuery;
}
登入後複製

再來看上面所說的參數設定問題,如果deep 沒有設置,_$ 覆蓋window.$,此時jQuery 別名$ 失效,但jQuery 本身完好無損。如果有其他類別庫或程式碼重新定義了 $ 變量,它的控制權就完全交接出去了。反之如果 deep 設定為 true 的話,_jQuery 覆蓋 window.jQuery,此時 $ 和 jQuery 都會失效。
這種操作的好處是,不管是框架混用還是jQuery 多版本共存這種高度衝突的執行環境,由於noConflict 方法提供的移交機制,以及本身返回未被覆蓋的jQuery 對象,完全能夠通過變量映射的方式解決衝突。

四、jQuery.noConflict實例
 
1、將$ 引用的物件對應回原始的物件:


jQuery.noConflict();
jQuery("p p").hide(); // 使用 jQuery
$("content").style.display = "none"; // 使用其他库的 $()
登入後複製

2、恢復使用別名$,然後建立並執行一個函數,在這個函數的作用域中仍然將$ 作為jQuery 的別名來使用。在這個函數中,原來的 $ 物件是無效的。這個函數對於大多數不依賴其他函式庫的插件都很有效:


jQuery.noConflict();
(function($) { 
 $(function() {
  // 使用 $ 作为 jQuery 别名的代码
 });
})(jQuery);
... // 其他用 $ 作为别名的库的代码
登入後複製

3、可以將jQuery.noConflict() 與簡寫的ready 結合,使程式碼更緊湊:


jQuery.noConflict()(function(){
  // 使用 jQuery 的代码
});
... // 其他库使用 $ 做别名的代码
登入後複製

4、建立一個新的別名用於在接下來的庫中使用jQuery 物件:


var j = jQuery.noConflict();
j("p p").hide();  // 基于 jQuery 的代码
$("content").style.display = "none";// 基于其他库的 $() 代码
登入後複製

5、完全將jQuery 移到一個新的命名空間


#
var dom = {};
dom.query = jQuery.noConflict(true);
//结果:
dom.query("p p").hide();  // 新 jQuery 的代码
$("content").style.display = "none";  // 另一个库 $() 的代码
jQuery("p > p").hide();  // 另一个版本 jQuery 的代码
登入後複製

以上是分享jQuery中noConflict()的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

夸克網盤怎麼分享到百度網盤? 夸克網盤怎麼分享到百度網盤? Mar 14, 2024 pm 04:40 PM

  夸克網盤和百度網盤都是很便利的儲存工具,不少的用戶都在詢問這兩款軟體互通嗎?夸克網盤怎麼分享到百度網盤?下面就讓本站來為用戶們來仔細的介紹一下夸克網盤的文件怎麼保存到百度網盤方法吧。夸克網盤的文件怎麼保存到百度網盤方法1、想要知道怎麼把夸克網盤的文件轉到百度網盤,首先在夸克網盤上下載需要保存的文件,然後打開百度網盤客戶端後,選擇壓縮檔案要儲存的資料夾,雙擊開啟該資料夾。  2、開啟該資料夾後,點選視窗左上角區域的「上傳」。  3、在電腦中找到需要上傳的壓縮文件,點選選

網路易雲音樂怎麼分享到微信朋友圈_網易雲音樂分享到微信朋友圈教程 網路易雲音樂怎麼分享到微信朋友圈_網易雲音樂分享到微信朋友圈教程 Mar 25, 2024 am 11:41 AM

1.首先我們進入到網易雲音樂中,然後在軟體首頁介面中,點選進入到歌曲的播放介面中。 2.然後在歌曲播放介面中,找到右上方的分享功能按鈕,如下圖紅框所示位置,點擊選擇分享的管道;在分享管道中,點擊底部的「分享至」選項,然後選擇第一個“微信朋友圈”,即可將內容分享至微信朋友圈。

百度網盤怎麼分享文件給好友 百度網盤怎麼分享文件給好友 Mar 25, 2024 pm 06:52 PM

近期,百度網盤安卓客戶端迎來了全新的8.0.0版本,這個版本不僅帶來了許多變化,還增添了許多實用功能。其中,最引人注目的便是資料夾共享功能的增強。現在,使用者可以輕鬆邀請好友加入,共同分享工作與生活中的重要文件,實現更便利的協作與分享。那麼究竟該如何分享給好友自己需要分享的文件呢,下文中本站小編就會為大家帶來詳細內容介紹,希望能幫助大家! 1)開啟百度雲APP,先點選在首頁選擇相關的資料夾,再點選介面右上角的【...】圖示;(如下圖)2)接著點選「共用成員」一欄中的【+ 】,最後在勾選所

MySQL ISNULL 函數詳解及用法介紹 MySQL ISNULL 函數詳解及用法介紹 Mar 01, 2024 pm 05:24 PM

MySQL中的ISNULL()函數是用來判斷指定表達式或列是否為NULL的函數。它傳回一個布林值,如果表達式為NULL則回傳1,否則回傳0。 ISNULL()函數可以在SELECT語句中使用,也可以在WHERE子句中進行條件判斷。 1.ISNULL()函數的基本語法:ISNULL(expression)其中,expression是要判斷是否為NULL的表達式或

解決Discuz微信分享無法顯示的問題 解決Discuz微信分享無法顯示的問題 Mar 09, 2024 pm 03:39 PM

標題:解決Discuz微信分享無法顯示的問題,需要具體程式碼範例隨著行動網路的發展,微信成為了人們日常生活中不可或缺的一部分。在網站開發中,為了提升使用者體驗和擴大網站的曝光度,許多網站會整合微信分享功能,讓使用者能夠輕鬆分享網站的內容到朋友圈或微信群組。然而,有時在使用Discuz等開源論壇系統時,會遇到微信分享無法顯示的問題,這給使用者體驗帶來了一定的困

分享惠普印表機驅動的兩種安裝方法 分享惠普印表機驅動的兩種安裝方法 Mar 13, 2024 pm 05:16 PM

  惠普印表機是許多辦公室內必備的列印設備,在電腦上安裝印表機驅動,可以完美解決印表機無法連線等等問題。那麼惠普印表機驅動程式要怎麼安裝?下面小編就跟大家介紹兩個惠普印表機驅動程式安裝方法。  第一種方法:官網下載驅動  1、在搜尋引擎中搜尋惠普中國官網,在支援一欄中,選擇【軟體與驅動程式】。  2、選擇【印表機】分類,在搜尋框中輸入你的印表機型號,點選【提交】,即可查找到你的印表機驅動程式。  3、根據你電腦的系統選擇對應的印表機,win10即選擇win10系統的驅動程式。  4、下載成功後,在資料夾中找到

jQuery小技巧:快速修改頁面所有a標籤的文本 jQuery小技巧:快速修改頁面所有a標籤的文本 Feb 28, 2024 pm 09:06 PM

標題:jQuery小技巧:快速修改頁面所有a標籤的文字在網頁開發中,我們經常需要對頁面中的元素進行修改和操作。使用jQuery時,有時候需要一次修改頁面中所有a標籤的文字內容,這樣可以節省時間和精力。以下將介紹如何使用jQuery快速修改頁面所有a標籤的文本,同時給出具體的程式碼範例。首先,我們需要引入jQuery庫文件,確保在頁面中引入了以下程式碼:&lt

使用jQuery修改所有a標籤的文字內容 使用jQuery修改所有a標籤的文字內容 Feb 28, 2024 pm 05:42 PM

標題:使用jQuery修改所有a標籤的文字內容jQuery是一款受歡迎的JavaScript庫,被廣泛用於處理DOM操作。在網頁開發中,經常會遇到需要修改頁面上連結標籤(a標籤)的文字內容的需求。本文將介紹如何使用jQuery來實現這個目標,並提供具體的程式碼範例。首先,我們需要在頁面中引入jQuery庫。在HTML檔案中加入以下程式碼:

See all articles