jQuery 常用核心方法

来源:https://www.cnblogs.com/evenyao/archive/2018/08/12/9462717.html
-Advertisement-
Play Games

jQuery 常用核心方法 .each() 遍歷一個jQuery對象,為每個匹配元素執行一個函數 $.extend() jQuery.extend([deep,] target [, object1 ] [, objectN ] )把多個對象進行合併,把所有的屬性添加到第一個對象上 當我們提供兩個或 ...


jQuery 常用核心方法

.each()

遍歷一個jQuery對象,為每個匹配元素執行一個函數

$('p').each(function(idx,node){
  $(node).text(idx + ':' + 'hello')
})

 

$.extend()

jQuery.extend([deep,] target [, object1 ] [, objectN ] )
把多個對象進行合併,把所有的屬性添加到第一個對象上

  • 當我們提供兩個或多個對象給$.extend(),對象的所有屬性都添加到目標對象(target參數)。

  • 如果只有一個參數提供給$.extend(),這意味著目標參數被省略。在這種情況下,jQuery對象本身被預設為目標對象。這樣,我們可以在jQuery的命名空間下添加新的功能。這對於插件開發者希望向 jQuery 中添加新函數時是很有用的。即{}為預設屬性,用戶向裡面設置屬性,覆蓋掉預設的屬性,沒有設置的即使用預設屬性。

var object = $.extend({}, object1, object2)

var object1 = {
  apple: 0,
  banana: { weight: 52, price: 100 },
  cherry: 97
}
var object2 = {
  banana: { price: 200 },
  durian: 100
}
// 將obj2合併到obj1上的案例
$.extend( object1, object2 )

 

.clone()

.clone()方法深度複製所有匹配的元素集合,包括所有匹配元素、匹配元素的下級元素、文位元組點。
通常我們將頁面上一個元素插入到DOM里另一個地方,它會被從老地方移走,類似剪切的效果。

例如:

<div class="container">
    <div class="hello">Hello</div>
    <div class="world">World</div>
</div>
$('.hello').appendTo('.world');

<div class="container">
  <div class="world">
    World
    <div class="hello">Hello</div>
  </div>
</div>

如果需要的是複製而不是剪切,可以像下麵這樣寫代碼:

$('.hello').clone().appendTo('.world')

 

.index()

從給定集合中查找特定元素 index下標

  • 沒參數返回第一個元素index
  • 如果參數是 DOM對象 或者 jQuery對象 ,則返回參數在集合中的index
  • 如果參數是選擇器,返回第一個匹配元素index,沒有找到返回-1
$('p').eq(2).index()  //2
$('.ok').index('div')  //獲取div標簽中的.ok的下標

 

.ready()

相當於原生JS的document.onDOMContentLoaded
當DOM準備就緒時,指定一個函數來執行。

例如執行的代碼需要在元素被載入之後才能使用時,(例如,取得圖片的大小需要在圖片被載入完後才行),就需要將這樣的代碼放到 load 事件中。

下麵兩種寫法都是等同的

$(document).ready(function(){
})

$(function(){
})

示例

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

 

window.onload 和 $(document).ready

開發中我們經常需要給一些元素的事件綁定處理函數。但問題是,如果那個元素還沒有被載入到頁面上,但是綁定事件已經執行完了,是沒有效果的。這兩個事件大致就是用來避免這樣一種情況,將綁定的函數放在這兩個事件的回調中,保證能在頁面的某些元素載入完畢之後再綁定事件的函數。那window.onload 和 $(document).ready 有什麼區別?document.onDOMContentLoaded 呢?

window.onload 和 $(document).ready 有什麼區別?

  1. 執行時間不同

window.onload必須等到頁面內包括圖片的所有元素載入完畢後才能執行。
$(document).ready()是 DOM結構 繪製完畢後就執行,不必等到所有頁面元素載入完畢。

  1. 兩個方法重覆執行的不同

window.onload不能同時編寫多個,如果有多個window.onload方法,只會執行最後一個
$(document).ready()可以同時編寫多個,並且都可以得到執行。
如果兩個方法都寫了,那麼$(document).ready()是比window.onload要先執行的。

  1. 簡化寫法

window.onload沒有簡化寫法
$(document).ready(function(){})可以簡寫成$(function(){})

document.onDOMContentLoaded 呢?

document.onDOMContentLoaded相當於 jQuery 當中的.ready()。當初始的 HTML 文檔被完全載入和解析完成之後,DOMContentLoaded 事件被觸發,而無需等待樣式表、圖像和子框架的完成載入。

jQuery文檔介紹 中有一段解釋這兩個不是同一個功能

 

翻譯

ready()方法提供了一種方法,可以在頁面的DOM文檔對象模型變得可以安全操作時立即運行JavaScript代碼。這通常是在用戶查看或與頁面交互之前執行所需任務的好時機,例如添加事件處理程式和初始化插件。當通過對該方法的連續調用添加多個函數時,它們在DOM準備好並按照添加順序運行。在jQuery 3.0中,jQuery確保在一個處理程式中發生異常不會阻止隨後添加的處理程式執行。

大多數瀏覽器以 DOMContentLoaded 事件的形式提供了類似的功能。然而,jQuery的 .ready() 方法有一個重要而有用的不同之處:如果DOM準備好了,瀏覽器在代碼調用 .ready(handler) 之前就載入了 DOMContentLoaded ,那麼函數處理程式仍然會被執行。相反,在事件觸發後添加的DOMContentLoaded 事件偵聽器從未執行。

所以document.onDOMContentLoaded並不等同於jQuery中的.ready(),只能說是一種類似的方法。


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

-Advertisement-
Play Games
更多相關文章
  • 數組去重方法 方法一:運用splice()方法和雙層for迴圈(有點類似選擇排序) function norepeat(arr){ for(var i = 0;i < arr.length-1;i++){ for(var j = i+1;j<arr.length;j++){ if(arr[i] == ...
  • 使用方法 ...
  • 這裡通過自己手動的方式“做”一個jQuery來使用,需要5步 1. 訪問 https://jquery.com 2. 點擊download 3. 拉到最下方,點擊 JQuery CDN 4. 得到所有版本jQuery,其中uncompressed(未壓縮),minified(壓縮) 5. 選擇需要的 ...
  • 稍稍總結了下css文本的一些屬性用法,自己忘記的時候也可以用來查查,不用去查網站那麼麻煩。 下麵是部分總結,也希望對其他人有用 文本修飾 (1)text-decoration: 文本修飾(橫線) 4個屬性值 overline line-through underline blink (1)overl ...
  • 結果如下:顯示一個向左滑動的相冊[來回滾動] ...
  • 最近學習了VUE,自己為了學習做了個小小的博客,功能很簡單,不過開發過程中也遇到了很多坑,所以記錄下來方便以後使用。歡迎大家交流學習。 ...
  • 今天在github 上看到一個非常巧妙的項目:umpox/TinyEditor 使用簡單的瀏覽器就能構造一個簡單的實時運行代碼的基於瀏覽器的前端編輯器,只需要很少代碼; 使用方法: 粘貼如下代碼到瀏覽器地址欄,(我測試了Chrome), 即可得到這樣一個好用的編輯器。 我們分析下其代碼: 其構造了三 ...
  • 原文鏈接:https://bbs.huaweicloud.com/blogs/53c0c3509b7a11e89fc57ca23e93a89f 我坦白我是標題黨,SB只是 的簡寫。 一. SASS/SCSS ,也稱為 ,是CSS預編譯語言的一種,常見的預編譯語言還包括 ,`Stylus 變數定義 函 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...