jQuery

jQuery:

它是一個使用原生的JS來封裝的常用方法的類庫(解決了瀏覽器的兼容問題)
jQuery非常強大的地方在于它的鏈式寫法(執(zhí)行完成一個方法后返回的結(jié)果依然是一個jQuery對象殖演,這樣就可以繼續(xù)的調(diào)用下一個方法就行了)

$box.css("backfround","lightblue").width();  //可以胸哥,因為.css之后仍是jQuery對象
$box.css("background","lightblue").width().position();  //報錯舶替,因為.width之后是數(shù)字,不是jQuery對象叶撒,不能再執(zhí)行position

jQuery中提供的常用方法

核心:

window.jQuery=window.$=jQuery(jQuery就是閉包中的私有函數(shù))

var jQuery=function(selector,context){
      return new jQuery.fn.init(selector,context);
//可以把這個理解為返回的是一個jQuery類的實例
};
jQuery.fn=jQuery.prototype={
      constructor:jQuery
};
jQuery.extend=jQuery.fn.extend=function(){
      jQuery.extend;  //把它當作一個普通的對象,在對象中增加了extend方法
      jQuery,fn.extend;  //在它的原型上也增加了一個extend方法
}

selector:[string]選擇器的類型 [object]JS原生的對象(把原生的對象轉(zhuǎn)換為jQuery對象) [function]回調(diào)函數(shù)(等價于我們的$(document).ready...)
context:document(傳遞的是一個原生JS對象能夠上下文砰左,如果是一個jQuery對象歇由,它默認為會把其重構(gòu)為選擇器)
jQuery選擇器:創(chuàng)建jQuery這個類的一個實例(jQuery對象)
在jQuery這個類的原型上定義了很多的屬性和方法,而通過選擇器獲取的每一個實例都可以調(diào)用這些方法:屬性瓮栗、CSS削罩、文檔操作、篩選费奸、動畫弥激、事件...eg:$("*").css();
**把jQuery當做一個普通的對象,在它自己的屬性上增加了一些常用的方法:Ajax愿阐、工具...eg
:$.ajax
extend:擴展微服,向jQuery這個類庫中增加一些其他常用的方法
(1)向jQuery屬性名上擴展(把它當作一個對象),-->作用:完善類庫缨历,給類庫增加核心的方法

jQuery.extend({
      aa:function(){
            console.log("aa");
      }
});
$.aa();  //--->aa

(2)向jQuery原型上擴展(把它當作一個類)--->作用:編寫一些基于jQuery插件

jQuery.fn.extend({
      bb:function(){
            console.log("bb");
      }
});
$().bb(); //-->bb

選擇器:

通過傳遞對應規(guī)則的內(nèi)容(ID以蕴、標簽名糙麦、樣式類名....),獲取到頁面中指定的元素/元素集合
var $oDiv=jQuery("#div1"); //--->$oDiv=$("#div1") -->$===jQuery

1-->jQuery選擇器獲取到的結(jié)果是一個jQuery對象丛肮,可以使用jQuery中提供的那些屬性和方法喳资,但不能直接的使用瀏覽器內(nèi)置的屬性和方法(如clientWidth,getAttribute等)

2--->關于原生JS對象和jQuery對象之間的轉(zhuǎn)換
原生轉(zhuǎn)變?yōu)閖Query:$(原生JS對象)腾供,如$(oDiv)
jQuery轉(zhuǎn)變?yōu)樵?/strong>直接通過索引獲取對應的元素即可
$oDiv[0]===$oDiv.get(0) 都是通過索引來獲取指定位置的元素對象(JS原生對象)

屬性:(常用)

1、jQUery的回調(diào)函數(shù)

var $call=$.Callbacks();  //-->創(chuàng)建一個回調(diào)函數(shù)的列表集合
$call.add(fn1);  //-->向集合中增加一個叫做fn1的函數(shù)
$call.fire(100);  //-->觸發(fā)fire方法的時候鲜滩,把回調(diào)函數(shù)集合中的方法執(zhí)行伴鳖,并且把對應的參數(shù)值傳遞給對應的方法-->“fn1:100”;
$call.remove(fn1);  //-->在集合中移除fn1這個方法

2、$(document).ready(function(){}); <===> $(function(){});和原生JS中的window.onload對應
window.onload的意思是:當頁面中的HTML結(jié)構(gòu)徙硅、圖片榜聂、文字等所有資源都加載完成后才會觸發(fā)這個行為,并且在一個頁面中它只能執(zhí)行一次嗓蘑,后面編寫的會把前面的覆蓋掉
$(document).ready(function(){});:只要HTML結(jié)構(gòu)加載完成就會觸發(fā)對應的行為须肆,而且在一個頁面中可以使用多次

3、屬性(常用)
--->attr:獲取和設置元素的自定義屬性桩皿,等價于原生JS中的set/getAttribute
$("#div1").attr("haha"); //獲取自定義屬性haha
$(#div1").attr("haha",100); //設置自定義屬性haha的值
$("#div1").attr({ index:1, name:"haha" }); //批量設置自定義屬性
$("#div1").removeAttr("haha"); //移除haha這個自定義屬性
--->prop:獲取和設置元素的屬性(和attr是不同的兩套方式豌汇,兩者之間不能相互混用:用attr設置的只能用attr刪除或修改或獲取,同理用prop設置的泄隔,也只能用prop操作)
prop內(nèi)置的屬性可以在HTML結(jié)構(gòu)中體現(xiàn)出來拒贱,但是不是內(nèi)置的屬性是體現(xiàn)不出來的(但可以獲取到值)
attr與prop的區(qū)別:attr一般都是用來設置和操作元素的自定義屬性的,而prop一般是用來操作元素的內(nèi)置屬性的(尤其是表單元素的操作佛嬉,大部分都在使用prop)

4逻澳、關于jQuery內(nèi)置遍歷機制和手動循環(huán)的方法
--->addClass/removeClass/toggleClass(toggle系列都是之前有就是移除,沒有就是新增):通過jQuery選擇器獲取到一個集合暖呕,然后讓集合直接調(diào)用jQuery中提供的方法斜做,相當于給集合中的每一個元素都調(diào)取了對應的方法(jQuery內(nèi)置循環(huán)操作)
eg:$DivList.addClass("w1"); //給所有div都添加了w1類,不用循環(huán)操作了

each:可以遍歷jQuery集合中的每一項(和數(shù)組的forEach類似)

$DivList.each(function(index,item){
  //this->就是我們當前遍歷的這一項的內(nèi)容:item
  $(this).addClass("w1");
});

jQuery(selector湾揽,context) context一般不需要傳遞瓤逼,默認是document,但也可以指定具體的上下文來獲取元素

篩選:

1钝腺、eq(index)抛姑、first() 、last()艳狐、hasClass(strClass)(檢測當前的元素中是否包含某一個樣式類名定硝,有則為true)
2、filter毫目、children蔬啡、find:常用的三個篩選方法
filter:同級過濾诲侮,首先通過選擇器獲取一個集合,在獲取的內(nèi)容中再進行二次篩選
$("*",$box).filter(); //什么都沒有箱蟆,所以必須filter中得寫東西
children:子集過濾
find:后代過濾沟绪,$box.find(); //-->結(jié)果是個空集合 ,find中也必須寫東西
-->jQuery這個元素對象的私有屬性中叫做selector這個屬性存儲的值是當前本次查找的選擇器的內(nèi)容空猜;context是當前本次查找的上下文

$("*",$box)  //-->context:document  selector:"#box *"
$("*",document.getElementById("box")  //--->context:div#box  selector:"*"

3绽慈、map:遍歷jQuery集合中的每一項,并且可以支持返回值把每一項進行修改辈毯,類似于數(shù)組中的map方法
4坝疼、parent:父親節(jié)點
5、parents:所有的父親節(jié)點(從當前開始一直找到HTML谆沃,把每一項都記錄下來)
6钝凶、next、nextAll唁影、siblings耕陷、prev、prevAll等

CSS:

1据沈、css:獲取或者設置(批量設置)當前元素的樣式值

var $box=$("#box");
$box.css("width");  //一個參數(shù)是獲取
$box.css({  //批量設置
    background:"red";
    opacity:0.5;
});

2哟沫、offset:不管父級參照物是誰,獲取當前元素距離BODY的偏移距離(top/left);而position:獲取當前元素距離父級參照物的偏移(top/left)
3锌介、scrollTop/scrollLeft:獲取或設置元素的卷去高度/寬度
4南用、width/height:獲取或設置元素的width/height
5、innerWidth/innerHeight:獲取或設置元素可視區(qū)域的寬高(獲取的時候等價于clientWidth/clientHeight)掏湾,設置的時候保留padding的值裹虫,把width的值進行改變(width的值最小是0)
$box.innerWidth(true); //加true是指默認加上margin的值
6、outerWidth/outerHeight:獲取或設置元素可視區(qū)域的寬高(包含邊框)融击;設置具體的值的時候和上面的效果一樣

文檔處理:

1筑公、append:向指定元素的末尾位置追加一個新的元素 容器.append(元素)
appendTo:元素.appendTo(容器)
2、prepend/prependTo:向指定元素的開頭位置追加一個新的元素
3尊浪、after/before:在當前元素的后面/前面追加新的元素
4匣屡、insertAfter/insertBefore:把選擇器獲取到的元素追加到指定元素的前面或者后面

var oDiv=document.createElement("div");
oDiv.id="div5";
$(oDiv).insertAfter($box);  //-->把創(chuàng)建的oDiv追加到$box的后面,和$box是同級的

5拇涤、replaceAll(selector):用匹配的結(jié)果替換所有selector匹配的元素

var oDiv=document.createElement("div");
oDiv.id="div5";
$(oDiv).replaceAll("ul");  //頁面中所有的ul都用oDiv給替換了

6捣作、remove:把匹配的結(jié)果在頁面中移除掉
$box.remove(); //把box移除掉

事件:

同一個事件同一個元素可以綁定多個方法

var $box=$("#box");
$box.on("click",function(){
    console.log(1);   //-->this:當前元素(JS原生對象)  $(this):jQuery對象
});
$box.on("click",function(){
    console.log(2);
});

效果(動畫):

1、animate():用于創(chuàng)建自定義動畫的函數(shù)鹅士。參數(shù)有四個券躁,分別是目標(最終)元素的屬性值,運動總時長,運動方式(效果:如勻速/非勻速等)也拜,運動完成后執(zhí)行的回調(diào)函數(shù)以舒。
$("#box").animate({left:xxx,top:xxx,...},duration,"linear/swing",function(){});
2、stop:結(jié)束之前正在運行的動畫慢哈,開啟一個新的動畫(結(jié)束上一個動畫蔓钟,下一個動畫緊接著當前位置開始運動的),讓上一個動畫停止
$("#box").stop().animate({},1000,function(){});
3卵贱、delay:延遲
4滥沫、finish:直接讓上一個動畫完成(結(jié)束上一個動畫,并且讓元素快速的到達目標位置键俱,再開始下一個動畫)
5佣谐、fadeIn(淡入)、fadeOut(淡出)方妖、fadeToggle
6、show(顯示)罚攀、hide(隱藏)党觅、toggle
7、slideUp(折起)斋泄、slideDown(展開)杯瞻、slideToggle

Ajax:

$.ajax({
      url:"json/test.txt?_="+Math.random(),
      type:"get",
      dataType:"json",  //-->支持"text"、"html"炫掐、"jsonp".....
      success:function(data){
            console.log(data);
      }
});

工具:

1魁莉、each:jQuery中有兩個each,(也有兩個map募胃,和each原理一樣旗唁,只是可以支持返回值)一個是:循環(huán)選擇器獲取得到的jQuery集合中的每一項

$("div").each(function(index,item){
      console.log(item);
});

另一個是:循環(huán)數(shù)組、類數(shù)組痹束、對象中的每一項

$.each([12,23,34],function(index,item){
       console.log(item);
});
$.each(document.getElementsByTagName("*"),function(index,item){
        console.log(item);
});
$.each({name:"gaoqi",age:24},function(index,item){
        console.log(item);
});

2检疫、$.makeArray===>listToArray將類數(shù)組對象轉(zhuǎn)換為數(shù)組對象

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市祷嘶,隨后出現(xiàn)的幾起案子屎媳,更是在濱河造成了極大的恐慌,老刑警劉巖论巍,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烛谊,死亡現(xiàn)場離奇詭異,居然都是意外死亡嘉汰,警方通過查閱死者的電腦和手機丹禀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人湃崩,你說我怎么就攤上這事荧降。” “怎么了攒读?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵朵诫,是天一觀的道長。 經(jīng)常有香客問我薄扁,道長剪返,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任邓梅,我火速辦了婚禮脱盲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘日缨。我一直安慰自己钱反,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布匣距。 她就那樣靜靜地躺著面哥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毅待。 梳的紋絲不亂的頭發(fā)上尚卫,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音尸红,去河邊找鬼吱涉。 笑死,一個胖子當著我的面吹牛外里,可吹牛的內(nèi)容都是我干的怎爵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼盅蝗,長吁一口氣:“原來是場噩夢啊……” “哼疙咸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起风科,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤撒轮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贼穆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體题山,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年故痊,在試婚紗的時候發(fā)現(xiàn)自己被綠了顶瞳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖慨菱,靈堂內(nèi)的尸體忽然破棺而出焰络,到底是詐尸還是另有隱情,我是刑警寧澤符喝,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布闪彼,位于F島的核電站,受9級特大地震影響协饲,放射性物質(zhì)發(fā)生泄漏畏腕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一茉稠、第九天 我趴在偏房一處隱蔽的房頂上張望描馅。 院中可真熱鬧,春花似錦而线、人聲如沸铭污。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘹狞。三九已至,卻和暖如春各拷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闷营。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工烤黍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人傻盟。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓速蕊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親娘赴。 傳聞我的和親對象是個殘疾皇子规哲,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

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

  • 原文鏈接 http://blog.poetries.top/2016/10/20/review-jQuery 關注...
    程序員poetry閱讀 16,647評論 18 503
  • 一、樣式篇 第1章 初識jQuery (1)環(huán)境搭建 進入官方網(wǎng)站獲取最新的版本 http://jquery.co...
    凜0_0閱讀 3,390評論 0 44
  • jQuery基礎(一)——樣式篇 1-2環(huán)境搭建 1-3 jQuery HelloWorld體驗 $(docume...
    croyance0601閱讀 1,084評論 0 8
  • 第一章 jQuery簡介 1-1 jQuery簡介 1.簡介 2.優(yōu)勢 3.特性與工具方法 1-2 環(huán)境搭建 進入...
    mo默22閱讀 1,587評論 0 11
  • 1.JQuery 基礎 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式诽表。設計者無需花費時間糾纏JS復雜的高級特性唉锌。 1....
    LaBaby_閱讀 1,341評論 0 2