jQuery從小白開始---初始jQuery

来源:https://www.cnblogs.com/zhen-prz/archive/2018/12/27/10185470.html
-Advertisement-
Play Games

jQuery是什麼? jQuery是一款優秀的JavaScript庫,從命名可以看出jQuery最主要的用途就是用來做查詢(jQuery=js+Query),正如jQuery官方Logo副標題所說(write less,do more)使用jQuery能讓我們對HTML文檔遍歷和操作、事件處理、動畫 ...


jQuery是什麼?

    

  • jQuery是一款優秀的JavaScript庫,從命名可以看出jQuery最主要的用途就是用來做查詢(jQuery=js+Query),正如jQuery官方Logo副標題所說(write less,do more)使用jQuery能讓我們對HTML文檔遍歷和操作、事件處理、動畫以及Ajax變得更加簡單。

jQuery的版本

  通過jQuery官網我們可以看到,目前jQuery有三個版本:

  • jQuery 1x
  • jQuery 2x
  • jQuery 3x

  那麼我們在使用時,到底該選哪一個版本呢?說到這就該看一下這三個版本的區別:

 

  • jQuery 1x :相容IE678,但相對其它版本文件較大,官方只做BUG維護,功能不再新增,最終版本為:1.12.4。
  • jQuery 2x :不相容IE678,相對1x文件較小,官方只做BUG維護,功能不再新增,最終版本為:2.2.4。
  • jQuery 3x :不相容IE678,只支持最新瀏覽器,很多老的jQuery插件不支持這個版本,相對1x文件較小,提供不包含Ajax/動畫API版本。

  我們可以從他的性能和查看百度、淘寶等網站去判斷,現在多用的是jQuery1x版。

  (註:可根據自身需求去下載jQuery版本

jQuery類型

  我們在下載時可以看到jQuery不論哪個版本,它都有兩種類型:

  1. 帶min       這個是壓縮過後的版本,它是去掉了我們的代碼中的空格和換行,並且自行變更了參數
  2. 不帶min   這個是生產版,利於開發人員去審查和更改

引入jQuery文件

1 <script src="js/jquery-1.11.3.min.js"></script>

或者線上引用

百度壓縮版引用地址:
<script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>

微軟壓縮版引用地址:
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.11.1.min.js"></script>

官網jquery壓縮版引用地址:
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>

 jQuery的核心函數就是:$()

編寫jQuery代碼

1 <script>
2     $(document).ready(function(){
3         //內容
4     })
5 </script>

jQuery和原生JS的區別

  話不多說,上代碼:

現在body裡面寫一個img

 

 <body>
     <img src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=904985312,1131631846&fm=26&gp=0.jpg"/>
 </body>

 

然後我們用原生JS來看看

window.onload = function (event){
    var img = document.getElementsByTagName("img")[0];
console.log(img);
}

通過原生JS入口函數可以拿到DOM元素

同樣用jQuery來試試

$().ready(function(){
    var $img = $("img")[0];
    console.log($img);
})

通過jQuery入口函數可以拿到DOM元素

那我們在試試分別獲取DOM元素的寬高

JS

var width = window.getComputedStyle(img).width;
var height = window.getComputedStyle(img).height;
    console.log("onload",width,height);

通過原生JS可以得到DOM元素的寬高

jQuery

var $width = $img.width;
var $height = $img.height;
console.log("ready",$width,$height);

 

註意,在運行這一個代碼時需要清除瀏覽器的歷史記錄

從這些可以看出

  • 原生JS和jQuery入口函數的載入模式不同
  • 原生JS會等到DOM元素載入完畢,並且也會等圖片載入完畢才執行
  • jQuery會等到DOM元素載入完畢,但不會等圖片載入完畢就執行

如果編寫多個入口函數呢?

window.onload = function(event){
    alert("這是第一個");
}
window.onload = function(event){
    alert("這是第二個");
}
$().ready(function(){
    alert("這是第一個")
})
$().ready(function(){
    alert("這是第二個")
})
  • 原生JS編寫多個入口函數,後面的會覆蓋前面的
  • jQuery編寫多個入口函數,後面的不會覆蓋前面的

jQuery入口函數的其它幾種寫法(瞭解一下就好了)

//第一種
$(document).ready(function(){
    alert("one");
})
//第二種
jQuery(document).ready(function(){
    alert("tow");
})
//第三種
$(function(){            
    alert("three");
})
//第四種
jQuery(function(){
    alert("four");
})

在使用中,我們通常使用第三種,因為write less嘛

 靜態方法和實例方法

  什麼是靜態方法和實例方法?

 

<script type="text/javascript">
    //1、定義一個類
    function AClass(){
    }
    //2、給這個類添加一個靜態方法
        //直接添加給類的就是靜態方法
        AClass.staticMethod = function(){
            alert("hello")
        }
            //靜態方法通過類名調用
        AClass.staticMethod();
            
        //3、給這個類添加一個實例方法
    AClass.prototype.instanceMethod = function(){
        alert("world");
    }
    //實例方法通過類的實例調用
    //創建一個實例(創建一個對象)
    var a = new AClass();
    //通過實例調用實例方法
    a.instanceMethod();
</script>

 jQuery-each方法與原生JS的forEach方法

用數組和偽數組舉例

<script type="text/javascript">
    var arr = [1,3,5,7,9];
    var obj = {0:2,1:4,2:6,3:8,4:10,5:12,length:6}
    arr.forEach(function(value , index){
        console.log(index,value)
    })
    obj.forEach(function(value , index){
    console.log(index,value)
    })
</script>

用原生JS的forEach靜態方法遍曆數組

  1. 第一個參數:遍歷到的元素
  2. 第二個參數:當前遍歷到的索引
  3. 註意:原生JS的forEach方法只能遍曆數組,不能遍歷偽數組
<script type="text/javascript">
    var arr = [1,3,5,7,9];
    var obj = {0:2,1:4,2:6,3:8,4:10,5:12,length:6}
    $.each(arr,function(index,value){
    console.log(index,value);
    })
    $.each(obj,function(index,value){
    console.log(index,value);
    })
</script>

用jQuery的each方法遍歷偽數組

  1. 第一個參數:當前遍歷到的索引
  2. 第二個參數:遍歷到的元素
  3. 註意:jQuery的each方法可以遍曆數組和偽數組

 jQuery-each方法與原生JS的map方法

<script>
    var arr = [1,3,5,7,9];
    var obj = {0:2,1:4,2:6,3:8,4:10,5:12,length:6};
        arr.map(function(value,index,array){
    console.log(index,value,array);
    })
    obj.map(function(value,index,array){
        console.log(index,value,array);
    })    
</script>

用原生JS的map方法遍歷

  1. 第一個參數:當前遍歷到的元素
  2. 第二個參數:當前遍歷到的索引
  3. 第三個參數:當前被遍歷的數組
  4. 註意:原生JS的map方法跟它的forEach一樣,不能遍歷偽數組
<script>
    var arr = [1,3,5,7,9];
    var obj = {0:2,1:4,2:6,3:8,4:10,5:12,length:6};
        $.map(arr, function(value,index) {
        console.log(index,value);
    });
    $.map(obj, function(value,index) {
        console.log(index,value);
    });
</script>

用jQuery的map方法遍歷

  1. 第一個參數:要遍歷的數組
  2. 第二個參數:每遍歷一個元素之後執行的回調函數
  • 回調函數
  1. 第一個參數:遍歷到的元素
  2. 第二個參數:遍歷到的索引
  3. 註意:jQuery的map方法和它的each方法一樣,數組跟偽數組都可以遍歷

既然jQuery的map方法和each方法都可以遍曆數組和偽數組,那麼它們有什麼區別呢?

 

<script>
    var arr = [1,3,5,7,9];
    var obj = {0:2,1:4,2:6,3:8,4:10,5:12,length:6};
    var res = $.map(obj, function(value,index) {
        console.log(index,value);
    });
    var res1 = $.each(obj, function(value,index) {
        console.log(index,value);
    });
        console.log(res);
    console.log(res1);
</script>    

 

  區別:

 

  • each靜態方法預設的返回值就是,遍歷誰就返回誰
  • map靜態方法預設的返回值是一個空數組
  • each靜態方法不支持在回調函數中對遍歷的數組進行處理
  • map靜態方法支持在回調函數中通過return對遍歷的數組進行處理,然後生成一個新的數組返回

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 問題:Xcode10 build 沒問題,跑虛擬機也沒問題,數據線連上run到真機上出現 Xcode 10 iOS12 "A valid provisioning profile for this executable was not found 解決方案: File>Project Setting ...
  • 轉載請標明出處,維權必究:https://www.cnblogs.com/tangZH/p/10181330.html 該錯誤是在載入so庫的時候出現的,就是找不到so庫。 一、檢查jinLibs目錄下是否有so庫 二、gradle的android{}裡面是否有設置: 三、相容性是否正確: 我們使用 ...
  • 1.vue生命周期的作用是什麼? 2. Vue實現數據雙向綁定的原理:Object.defineProperty()? 3.vue-cli如何新增自定義指令? 4.v-if 和 v-show 區別? 5.mvvm和mvc區別? ...
  • WebWorker 一定程度上可以算得上是瀏覽器中的多線程技術了,在項目中適當使用 Worker 來做一些耗時的操作能大大提高頁面整體流暢度。 Worker的使用也是非常簡單的,通過向 Worker 構造函數傳遞需要在worker中運行的文件路徑作為參數,就可以使得對應的文件運行在worker線程。 ...
  • 背景 最近使用ELK的sentinl進行告警配置,sentinl的郵件通知支持mustache,藉此機會學習了mustache相關知識,記錄在此。 mustache的思想 mustache的核心是標簽和logic less. 標簽: 定義模板的時候,使用了{{name}}、{{ systems}}{ ...
  • 寫前端代碼,尤其是做一個前端框架的時候,經常需要及時知道代碼的大致性能,這時候如果能有個好的辦法能一直看到當前頁面的fps就好了。 整體思路是一秒有一千毫秒,先記錄當前時間作為最後一次記錄fps的時間,通過 requestAnimationFrame 回調不斷給累加fsp計數器,並且判斷上次記錄fp ...
  • 圓角,其css如下 這沒什麼難的,記憶一下即可。但是深入一下,還是很有講究的。 問題1,div寬高皆為100px,border-radius:30px,這個30px是怎麼工作的?換成50px,70px,甚至200px會有什麼反應? 答:等於一個100px的正方形,然後用半徑為30px的圓來過渡邊角, ...
  • Vue 項目在開發時運行正常,打包發佈後卻出現各種報錯,這裡整理一下遇到的問題,以備忘。 1、js 路徑問題 腳手架預設打包的路徑為絕對路徑,改為相對路徑。修改 config/index.js 中 build 節點下 assetsPublicPath,把原來 ‘/’ 改為 ‘./’ 2、img 路徑 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...