摘要:一初步了解介紹由創(chuàng)建于年一月的開源項(xiàng)目,憑借著跨平臺(tái)的兼容性,簡(jiǎn)潔的語(yǔ)法,極大的簡(jiǎn)化了人員遍歷文檔,操作,處理事件,執(zhí)行動(dòng)畫,和開發(fā)的操作。只建立一個(gè)名為的對(duì)象。對(duì)發(fā)生在同一個(gè)對(duì)象上的一組動(dòng)作,可以直接連寫無需重復(fù)獲取對(duì)象。
jQuery(一)-- 初步了解 jQuery介紹
由John Resig創(chuàng)建于2006年一月的開源項(xiàng)目,jQuery憑借著跨平臺(tái)的兼容性,簡(jiǎn)潔的語(yǔ)法,極大的簡(jiǎn)化了JavaScript人員遍歷HTML文檔,操作DOM,處理事件,執(zhí)行動(dòng)畫,和開發(fā)Ajax的操作。jQuery優(yōu)點(diǎn)
輕量級(jí)。采用Uglifys壓縮后保持再30kb左右。
擁有強(qiáng)大的選擇器。jQuery允許開發(fā)者使用CSS1到CSS3幾乎所有選擇器,以及jQuery獨(dú)創(chuàng)的高級(jí)而復(fù)雜的選擇器。
出色的DOM封裝操作。jQuery封裝了大量常用的DOM操作,使開發(fā)者再編寫DOM操作相關(guān)程序的時(shí)候能夠得心應(yīng)手。
可靠的事件處理機(jī)制。jQuery的事件處理機(jī)制吸收了Javascript專家編寫的Dean Edwards編寫的事件處理函數(shù)的精華,使得jQuery再處理事件綁定的時(shí)候相當(dāng)可靠。在預(yù)留退路(graceful degradation)、循序漸進(jìn)以及非入侵式(Unobtrusive)編程思想方面,jQuery也做得非常不錯(cuò)。
完善的Ajax。jQuery將所有的ajax操作封裝到一個(gè)函數(shù)$.ajax()里,使得開發(fā)者處理Ajax的時(shí)候能夠?qū)P奶幚順I(yè)務(wù)邏輯而無需關(guān)心復(fù)雜的瀏覽器兼容性和XMLHttpRequest對(duì)象的創(chuàng)建和使用問題。
不污染頂級(jí)變量。jQuery只建立一個(gè)名為jQuery的對(duì)象。其所有的函數(shù)方法都在這個(gè)對(duì)象之下。其別名$也可以隨時(shí)交出控制權(quán),絕對(duì)不會(huì)污染其他的對(duì)象。使得jQuery庫(kù)可以與其他Js庫(kù)共存
出色的瀏覽器兼容性
鏈?zhǔn)讲僮鞣绞健?duì)發(fā)生在同一個(gè)jQuery對(duì)象上的一組動(dòng)作,可以直接連寫無需重復(fù)獲取對(duì)象。
隱式迭代。當(dāng)用jQuery找到帶有.myClass類的全部元素時(shí),無需循環(huán)遍歷每一個(gè)返回的元素。
行為層與結(jié)構(gòu)層的分離。開發(fā)者可以使用jQuery選擇器選中元素,然后直接給元素添加事件。簡(jiǎn)單的來說就是可以在js中操作html。
豐富的插件支持。
完善的文檔。
開源
jQuery使用可以通過node.js自帶的包管理器npm或者bower等包管理器下載,也可以通過官網(wǎng)下載
npm下載/cnpm下載/bower下載
npm i jquery/cnpm i jquery/bower i jquery
官網(wǎng)下載
https://code.jquery.com/jquery-3.4.1.min.js,另存為Js文件即可,也可以在線引用
開始之前需要知道一點(diǎn),在jQuery庫(kù)中,$就是jQuery的一個(gè)簡(jiǎn)寫形式,例如$("#foo")和jQuery("#foo")是等價(jià)的,$.ajax和jQuery.ajax是等價(jià)的。
//引入jQuery
其中$(document).ready();這段代碼類似于window.onload的作用,但是其中有些差別
window.onload | $(document).ready() | |
---|---|---|
執(zhí)行時(shí)機(jī) | 必須等待網(wǎng)頁(yè)中所有的內(nèi)容加載完畢后(包括圖片)才能執(zhí)行 | 網(wǎng)頁(yè)中所有DOM結(jié)構(gòu)繪制完畢后就執(zhí)行,可能DOM元素關(guān)聯(lián)的東西并沒有加載完 |
編寫個(gè)數(shù) | 不能同時(shí)編寫多個(gè),以下代碼無法正確執(zhí)行:window.onload = function(){alert("test")};window.onload = function(){alert("test2");}結(jié)果只會(huì)輸出“test2” | 能同時(shí)編寫多個(gè),以下代碼能夠正確執(zhí)行:$(document).ready(function(){alert("hello world");}) $(document).ready(function(){alert("hello again")};);結(jié)果兩次都輸出 |
簡(jiǎn)化寫法 | 無 | $(document).ready(function(){//....};)可以簡(jiǎn)寫為$(function(){}); |
我的理解是通過.運(yùn)算符來鏈接層級(jí)操作,類似于Js原生的document.getElementById("#app").value這樣的。
(1)對(duì)于同一個(gè)對(duì)象不超過三個(gè)操作的,可以直接寫成一行。
``$("li").show().unbind("click");
(2)對(duì)于同一個(gè)對(duì)象不超過三個(gè)操作的,建議每行寫一個(gè)操作
$(this).removeClass("mouseout") .addClass("mouseout") .stop() .fadeTo("fast",0.6) .fadeTo("fast",1) .unbind("click")
(3)對(duì)于多個(gè)對(duì)象的少量操作,可以每個(gè)對(duì)象寫一行,如果涉及子元素,可以考慮適當(dāng)?shù)乜s進(jìn),例如上面提到的代碼。
$(this).addClass("highlight").children("li").show().end() --------------------------------------------------------- $(this).addClass("highlight") .children("li").shiw().end()
$("#table > tbody > tr:has(td:has(:checkbox:enabled))").css("background","red");
這一行代碼就算是精通jQuery的人也不一定能一眼就看出作用,通過有意義的注釋可以提高開發(fā)效率
//在一個(gè)id為table的表格的tbody中,如果每行的一列中的checkbox沒有被禁用,則把這行的背景設(shè)為紅色 $("#table > tbody > tr:has(td:has(:checkbox:enabled))").css("background","red");jQuery對(duì)象和DOM對(duì)象
每一份DOM都可以表示成一顆樹,樹的內(nèi)容為html代碼的標(biāo)簽元素,按層級(jí)表示
//...
。。。jQuery對(duì)象就是通過jQuery包裝DOM對(duì)象后產(chǎn)生的對(duì)象。
//通過獲取id為foo的元素內(nèi)的html代碼。.html()是jQuery里的方法
DOM對(duì)象操作 | jQuery對(duì)象操作 |
---|---|
document.getElementById("foo").innerHTML | $("#foo").html() |
注意:
在jQuery對(duì)象中無法使用DOM對(duì)象的任何方法。,DOM對(duì)象中也不能使用任何jQuery方法。
像DOM對(duì)象有innerHTML方法,但是jQuery中沒有;jQuery對(duì)象中有html()方法,但是DOM中沒有。
jQuery對(duì)象和DOM對(duì)象的互相轉(zhuǎn)換在討論此之前規(guī)定好代碼規(guī)范:
如果獲取的是jQuery對(duì)象,那么在變量前面加上$
var $variable = jquery對(duì)象
如果獲取的是DOM對(duì)象,
var variable = DOM對(duì)象
jQuery 對(duì)象不能使用DOM 中的方法,但如果對(duì) jQuery 對(duì)象所提供的方法不熟悉,或者 jQuery 沒有封裝想要的方法,不得不使用 DOM 對(duì)象的時(shí)候,有以下兩種處理方法。
jQuery 提供了兩種方法將一個(gè)jQuery對(duì)象轉(zhuǎn)換成 DOM 對(duì)象,即[index]和get(index)
案例html代碼:
(1)jQuery對(duì)象是一個(gè)類似于數(shù)組的對(duì)象,可以通過[index]的方法得到相應(yīng)的DOM對(duì)象
var $cr = $("#cr"); //jquery 對(duì)象 var cr = $cr[0]; //DOM 對(duì)象 alert(cr.checked); //檢測(cè)這個(gè)checkbox是否被選中
(2)另一種方法是jQuery 本身提供的,通過get(index)方法得到相應(yīng)的 DOM 對(duì)象
var $cr = $("#cr"); //jquery 對(duì)象 var cr = $cr.get(0); //DOM 對(duì)象 alert(cr.checked); //檢測(cè)這個(gè)checkbox是否被選中
對(duì)于一個(gè) DOM 對(duì)象,只需要用$()把DOM對(duì)象包裝起來,就可以獲得一個(gè)jQuery對(duì)象了。方式為$(DOM對(duì)象)
var cr = document.getElemntById("cr"); //DOM 對(duì)象 var $cr = $(cr); //jQuery 對(duì)象
轉(zhuǎn)換后,可以任意使用jQuery 中的方法。
通過以上方法,可以任意相互轉(zhuǎn)換jQuery 兌現(xiàn)和 DOM 對(duì)象。
范例代碼)
解決jQuery庫(kù)與其他庫(kù)的沖突在jQuery 庫(kù)中,幾乎所有的插件都被限制在它的命名空間里 -- jQuery。通常,全局對(duì)象都被很厚地儲(chǔ)存在jQuery 命名空間里,因此當(dāng)jQuery 庫(kù)和其他JavaScript 庫(kù)一起使用時(shí)不會(huì)引起沖突。
默認(rèn)情況下,jQuery用 -- $作為快捷方式。
一共有三種方式,其中第三種有兩種方法
方式一:移交“$”使用權(quán)
jQuery.noConflict(); //將變量$ 的控制權(quán)交給prototype.js /** * 在該函數(shù)內(nèi)就可以用“jQuery”代替字符“$”使用jquery */ jQuery(function(){//使用jQuery jQuery("p").click(function(){ alert(jQuery(this).text()); }) }) $("pp").style.display = "none"; //使用pototype.js隱藏元素
方式二:起別名
var $J = jQuery.noConflict(); //自定義快捷方式 /** * 同樣的,在這里可以使用“$J”代替字符“$”使用jquery */ $J(function(){ $J("p").click(function(){ alert($J(this).text()); }) }) $("pp").style.display = "none";
方式三:既可以使用字符$,又不用起別名
其一:移交使用權(quán)時(shí)傳參,之后就可以在jQuery方法內(nèi)使用字符$而不用別名
jQuery.noConflict(); //使用jQuery設(shè)定頁(yè)面加載時(shí)執(zhí)行的函數(shù)傳參 jQuery(function($){ $("p").click(function(){ alert($(this).text()); }) }); $("pp").style.display = "none";
其二:類似于一,不過是使用匿名函數(shù)
jQuery.noConflict(); //匿名函數(shù)內(nèi)部的 $ 均為jQuery (function($){ $("p").click(function(){ alert($(this).text()); }) }) $("pp").style.display = "none";
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106673.html
摘要:進(jìn)一步了解類數(shù)組對(duì)象可以看這篇文章對(duì)象的構(gòu)建和分離構(gòu)造器然后我們回來看看,讓我們悲傷的代碼。。。然后又通過下面的語(yǔ)句,將兩個(gè)獨(dú)立的構(gòu)造器關(guān)聯(lián)起來了。 背景 不造輪子的程序員不是好程序員,所以我們今天嘗試造一下輪子。今天的主角是 jQuery ,雖然現(xiàn)在市面上已被 React,Angular,Vue 等擠的容不下它的位置,但是它的簡(jiǎn)單 API 設(shè)計(jì)依然優(yōu)秀,值得學(xué)習(xí)和體會(huì)。 任務(wù) 今天造...
摘要:由于是基于的,因此對(duì)有一定的了解會(huì)對(duì)的理解和使用有較大幫助。由于是基于的,因此有視圖和模型的概念。掛載的元素關(guān)聯(lián)聲明的元素的概念,就是圖形顯示的主體,可以有各種不同的形狀,預(yù)設(shè)有常用的矩形橢圓平行四邊形等。 一、jointJS簡(jiǎn)介 jointJS是一個(gè)基于svg的圖形化工具庫(kù),在畫布上畫出支持拖動(dòng)的svg圖形,而且可以導(dǎo)出JSON,也能通過JSON配置導(dǎo)入直接生成圖形。 可以基于joi...
摘要:大部分人都知道回調(diào)函數(shù)在中被發(fā)揮的淋漓盡致,然而新手往往很少知道回調(diào)函數(shù)原理,所以接下來我們?nèi)砸赃@個(gè)栗子為代表探討回調(diào)函數(shù)。這就是對(duì)回調(diào)函數(shù)的簡(jiǎn)單講解,萌新程序員,歡迎糾錯(cuò) JS的異步執(zhí)行機(jī)制 什么是異步執(zhí)行 為了提高Javascript代碼的運(yùn)行效率,JS對(duì)于部分函數(shù)方法采用了異步調(diào)用機(jī)制(如Ajax的操作)。異步執(zhí)行的函數(shù)方法的執(zhí)行并非為一個(gè)隊(duì)列挨個(gè)執(zhí)行的,而是相互獨(dú)立,同時(shí)調(diào)用執(zhí)...
摘要:學(xué)編程真的不是一件容易的事不管你多喜歡或是多會(huì)編程,在學(xué)習(xí)和解決問題上總會(huì)碰到障礙。熟練掌握核心內(nèi)容,特別是和多線程初步具備面向?qū)ο笤O(shè)計(jì)和編程的能力掌握基本的優(yōu)化策略。 學(xué)Java編程真的不是一件容易的事,不管你多喜歡或是多會(huì)Java編程,在學(xué)習(xí)和解決問題上總會(huì)碰到障礙。工作的時(shí)間越久就越能明白這個(gè)道理。不過這倒是一個(gè)讓人進(jìn)步的機(jī)會(huì),因?yàn)槟阋恢辈粩嗟膶W(xué)習(xí)才能很好的解決你面前的難題...
摘要:在這一節(jié),我們碰到的片段是一組立即運(yùn)行的匿名函數(shù)。匿名函數(shù)的調(diào)用要調(diào)用一個(gè)函數(shù),我們必須要有方法定位它,引用它。那么很顯然,沒有任何實(shí)現(xiàn)的匿名函數(shù)不可能應(yīng)用了閉包特性。 代碼如下: (function(){ //這里忽略jQuery所有實(shí)現(xiàn) })(); (function(){ //這里忽略jQuery所有實(shí)現(xiàn) })(); 半年前初次接觸jQuery的時(shí)候,我也像其他人一樣很興...
閱讀 2625·2023-04-26 03:00
閱讀 1427·2021-10-12 10:12
閱讀 4233·2021-09-22 15:33
閱讀 2959·2021-09-22 15:06
閱讀 1561·2019-08-30 15:44
閱讀 2175·2019-08-30 13:59
閱讀 553·2019-08-30 11:24
閱讀 2451·2019-08-29 17:07