jQuery的前端框架

jQuery概述

JavaScript 庫封裝了很多預定義的對象和實用函數(shù)。能幫助使用者建立有高難度交互客戶端頁面, 并且兼容各大瀏覽器勤婚。
核心理念是write less,do more(寫得更少,做得更多)

當前流行的 JavaScript 庫有:

jQuery 使用非常多 , EXTJS 功能比jQuery更多,但ext2.0收費,Prototype 一般用于做框架,YUI! (Yahoo! User Interface)
Bootstrap霜幼,來自 Twitter瘾婿,是目前很受歡迎的前端框架恬惯。Bootstrap 是基于 HTML向拆、CSS、JAVASCRIPT 的酪耳,它簡潔靈活浓恳,使得 Web 開發(fā)更加快捷

jQuery介紹

jQuery是繼prototype之后又一個優(yōu)秀的Javascript庫。它是輕量級的js庫 碗暗,它兼容CSS3颈将,還兼容各種瀏覽器。
jQuery已經(jīng)成為最流行的javascript庫言疗,在世界前10000個訪問最多的網(wǎng)站中晴圾,有超過55%在使用jQuery。由美國人John Resig在2006年1月發(fā)布,jQuery是免費噪奄、開源的死姚。

jQuery分類:

WEB版本:我們主要學習研究 (jQuery-版本.js 、 jQuery-版本-min.js)
UI版本:集成了UI組件
mobile版本:針對移動端開發(fā)
qunit版本:用于js測試的
jquery官網(wǎng) http://jquery.com/

常用版本介紹:

min版是上線版本勤篮,沒有換行符等都毒,節(jié)省存儲空間。
1.4.* 舊版的穩(wěn)定版本
1.8.* - 1.9.* 學習使用版本
1.11.* 最新的版本
2.1+* 2.0后的版本不再兼容低版本的IE瀏覽器

jQuery的封裝

  • js只有一個全局代碼區(qū)碰缔,聲明變量的時候出現(xiàn)同名的概率比較高温鸽,也就是容易造成覆蓋
  • 使用命名空間,將代碼掛載到某個對象下,但是仍然存在對象被覆蓋的風險
  • 工廠模式封裝:將對象封存起來手负,讓代碼更加的具備完整性涤垫,但是依然存在被覆蓋的風險
  • 不要函數(shù)名字,雖然解決了被覆蓋的風險竟终,但是無法進行調用了
  • 使用自己調用自己的方式可以實現(xiàn)函數(shù)的調用蝠猬,但是只能調用一次,在頁面加載的時候
  • 閉包原理:使用更大作用域變量或者大家同一認可的變量將執(zhí)行一次就會消失的內容記錄下來统捶,實現(xiàn)重復調用

jQuery使用

jQuery的基本操作

jQuery同dom操作的原理相同,同樣的獲取元素對象,修改其樣式榆芦、屬性、文本等’喘鸟,只是簡化了代碼.

  • 獲取jQuery對象的三種方式

語法:$(選擇器或者DOM對象)或jQuery(選擇器或者DOM對象) ,$==jQuery,方式的區(qū)別是因為封裝原理匆绣,包裝對象所形成的語法特點。含義是相同的什黑。

    // $() 語法崎淳,建議:如果是jQuery對象變量名使用$作為前綴
    var  $obj = $("#username");
    // jQuery() 語法. 
    var  $obj = jQuery("#username");
  • jQuery對象和DOM對象相互轉換

注意:jQuery對象使用jquery的api(方法、函數(shù))愕把。DOM對象使用 dom 的函數(shù)拣凹、屬性等森爽。不能混淆使用。

    /*dom對象轉化為jquery對象*/
    var obj = document.getElementById("div2");
    /*轉化操作*/
    var $obj = $(obj);
    alert($obj.text() + "第二次");
    
    /*jQuery對象轉化文dom對象*/
    var div2 = $("#div2");
    //先通過 $(...) 獲得jQuery對象嚣镜,底層使用數(shù)組進行維護的爬迟,可以存放多個對象。
        //然后通過get()可以從jquery對象轉換成 dom對象菊匿。參數(shù):數(shù)組的下標付呕,可以省略。如果省略下標獲得dom 數(shù)組跌捆。
    var obj2 = div2.get(0);
    alert(obj2.outerHTML + "第三次");
jQuery的選擇器(重點)

jQuery的選擇器的設計原理和CSS選擇器的選擇器設計理念相同徽职。

  • 基本選擇器的使用

// id選擇器
// 標簽演示 :<標簽  id="id值">
// 語法:
$("#id");

// 標簽(元素)選擇器
// 語法:
$("標簽名");

// 類選擇器
// 標簽元素:<標簽 class=”class名稱”>
// 語法:

$(".class名稱")

// 通配符選擇器:
// 語法:$(“*”)   <!—選擇所有的標簽元素-->

// 多選擇器選擇;
// 語法:     $("選擇器1,選擇器2疹蛉,....")表示的是同時滿足兩種選擇器的元素。

$(“#id,.class”)  

  • 層級選擇器

定義: 即Ancestor(祖先)和descendant(后代)之間的關系力麸,返回值是集合的形式Array(Elements)可款。


// 所有子孫元素
// 關系: Ancestor descendant    //給定祖先下的匹配所有的后代元素
/* 語法:*/  $("A  B")  -->     //A標簽中 所有的B標簽

// 所有孩子元素
// 關系:parent > child         //給定父元素下的匹配所有的子元素
/*語法:*/   $("A > B")  -->    //A標簽中 所有的子標簽中B標簽

// 后面第一個兄弟
// 關系:prev + next            //匹配所有緊接在prev后的next元素
/*語法:*/   $("A + B")  -->    //A標簽后面的第一個兄弟元素

//后面的所有兄弟
//關系:     prev ~ siblings   //匹配prev之后的所有siblings元素
/*語法:*/   $("A ~ B")  -->    //A標簽后面的所有兄元素

  • 過濾器的使用

基本過濾選擇器

語法規(guī)則1: $("A:過濾類型")  -> A標簽(或元素)元素經(jīng)過過濾后的所有元素
注意:常見的過濾器有節(jié)點順序的屬性,表單元素過濾的屬性(當過濾類型唯一也可以:  $(“:過濾器”))克蚂,內容過濾屬性闺鲸,可見性過濾,子元素過濾

屬性過濾器

語法規(guī)則: $("A[attr=’attrValue’]")  --> A標簽(或元素)元素經(jīng)過屬性值過濾后的元素
jQuery操作樣式屬性(重點)

操作樣式就是操作:屬性,類class,html代碼/文本/值,css,位置,尺寸
語法規(guī)則:css(參數(shù)個數(shù))埃叭,text(參數(shù)個數(shù))摸恍,attr(參數(shù)個數(shù)),html(參數(shù)個數(shù))
參數(shù)個數(shù):一個參數(shù)表示獲取當前選擇的值(也可以是傳入JOSN格式批量設置屬性)赤屋, 兩個參數(shù)表示設置指定屬性的值

  • 操作CSS樣式

//直接設置樣式的值      
$div.css("border", "1px solid red");
//獲取指定樣式的值
alert($div.css("border"))
//通過JOSN的方式設置樣式的值
$div.css({
    "width":"100px",
    "height":"100px",
    "background-color":"#ff0"
});

  • 操作class屬性操作樣式

//操作的是標簽的class屬性 <標簽  class="class名稱">
addClass(class名稱)     // 追加一個class值
removeClass("class")    // class移除
toggleClass("class")    // 添加和移除切換立镶。如果沒有就添加,如果有就移除类早。

  • jQuery操作標簽屬性文本
<!-- attr()方法使用 -->
<!-- attr(name)  通過屬性名獲得屬性值媚媒。<標簽  屬性名=“屬性值”> -->
<!-- attr(key,val)  給指定的屬性設置值。(設置一個) -->
<!-- attr(pro)  給jQuery對象設置一組值涩僻。使用JSON格式缭召。 -->
<!-- Pro ->  {key:value , key : value , .....}  key必須使用雙引號,value如果字符串也必須使用雙引號逆日。使用單引號嵌巷,屬于畸形格式json -->
<!-- removeAttr(name) 將執(zhí)行屬性移除 -->


//使用示例:
//標簽: <input type=’text’name=’value’>
//語法:

$(“:text”).attr(“name”)  //獲取name的屬性值
$(“:text”).attr(“name”,“value”)  //設置name的屬性值
$(“:text”).removeAttr(“name”)  //刪除name的屬性值
$(“:text”).attr({
       “name1”:“value1”,
“name2”:“value2”,
})  //通過JOSN的方式設置一組屬性值.

//注意:低版本可以使用attr方法設置屬性的值.高版本中建議使用prop的方法設置屬性的值.

html(),val(),text()方法使用

操作的是標簽的value屬性或者標簽體

val() 獲得 value屬性的值室抽。<標簽 value="">
val(值) 設置值

html() 獲得標簽體內容搪哪,以標簽方式
html(值) 設置內容

text() 獲得標簽體內容,以文本方式
text(值) 以文本方式設置內容

注意:text和html的區(qū)別坪圾,當添加的是標簽元素時text會把標簽當作文本噩死,html會當作標簽颤难。

其他方法的使用

  • 位置

offset() 獲得位置,返回json數(shù)據(jù)已维。格式:{"top": xx , "left" : yy}
offset(坐標) 設置位置
position() 獲得相對父元素偏移
scrollTop([val]) 獲得 或 設置 垂直滾動條的位置
scrollLeft([val]) 獲得 或 設置 水平滾動條的位置

  • 尺寸

height([val]) 獲得 或 設置 高度
width([val]) 獲得 或 設置 寬度

jQuery操作文檔(重點)
  • 操作結構的方法
  • 內部插入,外部插入,復制,替換,刪除,包裹

A.append(B) 行嗤,將B插入到A內部的后面。(追加到后面)
A.prepend(B) 垛耳,將B插入到A內部的前面栅屏。(追加到前面)

A.appendTo(B) , 將A插入到B內部的后面。(追加到后面)
A.prependTo(B) 將A插入到B內部的前面堂鲜。(追加到前面)

  • 外部插入
    A.after(B)栈雳,將B插入到A后面
    A.before(B) ,將B插入到A前面

A.insertBefore(B) 缔莲,將A插入到B前面
A.insertAfter(B) 哥纫,將A插入到B后面

  • 復制
    clone(event [,deepEven])
    參數(shù)1:表示是否克隆事件
    參數(shù)2:子元素中綁定數(shù)據(jù)是否被克隆。

  • 替換
    A.replaceWith(B) 使用B替換掉A
    A.replaceAll(B) 使用A替換掉所有的B

  • 刪除
    empty() 清空標簽體內容痴奏,刪除所有子元素
    remove() 將指定對象移除蛀骇,返回值為移除對象。但此對象將綁定事件读拆,綁定數(shù)據(jù)都一并移除擅憔。
    detach()將指定對象移除,返回值為移除對象檐晕。但此對象保留 綁定事件暑诸,綁定數(shù)據(jù) 等。

  • 包裹
    wrap(...) : 每一個匹配元素使用指定的內容包裹辟灰。
    wrapAll(...):所有的元素使用一個指定的內容包裹
    wrapInner(...):子節(jié)點使用指定的內容包裹个榕。
    unwrap(): 移出該元素的父元素。


each()遍歷方法

用法
第一種用法
/*第一種方式*/
$("#b1").click(function(){
    $("input:hidden").each(function(index,dom){
        alert("dom.value" + "===========" + dom.value);             
    })  
})
<input type="button" value=" 選取" id="b2"/>
/*第二種方式*/
$("#b2").click(function(){
    $.each($("input:hidden"),function(){
         alert("$(this).val()" + "===========" + $(this).val());            
    })
})

第二種用法
// 定義二維數(shù)組:
var arr = new Array(4);
arr[0] = new Array("哈爾濱","齊齊哈爾","大慶","佳木斯");
arr[1] = new Array("長春市","吉林市","四平市","通化市");
arr[2] = new Array("沈陽市","錦州市","大連市","鐵嶺市");
arr[3] = new Array("鄭州市","洛陽市","安陽市","南陽市");
var $cities = $(arr[$pro]);
$cities.each(function(){
     $city.append("<option>" + this + "</option>");
})

文檔的元素篩選的方法

篩選與之前的選擇器雷同,篩選提供的都是函數(shù).

  • 過濾

eq(index|-index):獲取指定索引的元素.如果是正數(shù),索引從0開始;若是負數(shù),倒著數(shù)從1開始.
first():第一個
last():最后一個
hasClass(...):判斷元素是否含有特定的樣式
filter(...):篩選出與指定表達式匹配的元素集合
is(...):判斷元素是否符合指定的選擇器
has(...):含有特定后代的元素
not(...):刪除與指定表達式匹配的元素
slice(start,end):從給定的數(shù)組中芥喇,按照范圍截取元素笛洛。 [start,end)
map(fn):將一組元素轉換成其他數(shù)組

  • 查找

children([...]):獲取他的所有孩子
closest(...):從元素本身開始,逐級向上級元素匹配乃坤,并返回最先匹配的元素
find(...):查找后代
next():下一個兄弟
nextAll():后面所有的兄弟
nextUntil(...):從下一個兄弟開始,直到指定元素結束
parent():獲取父元素
parents():匹配元素的祖先元素的元素(不包含根元素)
prev():上一個兄弟
prevAll():前面的所有兄弟
prevUntil():從上一個兄弟開始,直至指定元素結束
siblings():所有的兄弟

closest和parents的主要區(qū)別是:

  1. 前者從當前元素開始匹配尋找苛让,后者從父元素開始匹配尋找;
  2. 前者逐級向上查找湿诊,直到發(fā)現(xiàn)匹配的元素后就停止了狱杰,后者一直向上查找直到根元素,然后把這些元素放進一個臨時集合中厅须,再用給定的選擇器表達式去過濾仿畸;
  3. 前者返回0或1個元素,后者可能包含0個,1個错沽,或者多個元素簿晓。
  • 串聯(lián)
A.add(B)  將A和B拼湊在一起,等效 $(A,B)
A.children().andSelf()   所有孩子千埃,再添加自己
A.children().end()...  使用end后將返回A位置
contents() 獲得所有節(jié)點(子元素憔儿、文本)  <div>abc<a></a> xxx</div>

jQuery的事件綁定
  • 常見事件概述

focus和focusin 得到焦點
focus 獲得焦點
foucsin 獲得焦點》趴桑可以在父元素上檢測子元素獲取焦點的情況
blur和focusout 失去焦點
mouseover 和 mouseenter 移進
mouseover , 如果鼠標指針穿過任何子元素谒臼,同樣會觸發(fā) mouseover 事件
mouseenter ,如果鼠標指針穿過任何子元素,不會觸發(fā) mouseenter 事件
mouseout和mouseleave 移除 同上

  • 頁面的載入事件

注意點:頁面加載事件可以向下疊加耀里;在一個頁面中可以使用多次
原生JS事件也可以同時綁定蜈缤,但是最后加載。

綁定語法:


//常用格式1:
$(document).ready(function(){
//....
})

//常用格式2: 格式1的簡化版
$(function(){
//......
});

//常用格式3:完整版
jQuery(document).ready(function(){
//......
});

  • 事件的處理和委派

處理

on:綁定多個事件
one: 綁定一次事件
bind和unbind
bind:綁定事件,一直使用,直到解綁

例如:$btn1.bind(“click”,function(){}); ===$btn1.click(function(){});

unbind:解綁事件
綁定的時候可以指定別名,格式: 事件.別名

例如: 
bind(“click.c1”,fn);
unbind(“click.c1”);
trigger和triggerHandler
trigger() 觸發(fā)所有的事件(包括瀏覽器默認的)
triggerHandler() 觸發(fā)所有的事件(不包括瀏覽器默認的)

委派

live jQuery給所有匹配的元素附加一個事件處理函數(shù)冯挎,即使這個元素是以后再添加進來的也有效,例如給A標簽添加事件底哥,之后再追加a標簽都具有相同的事件。

事件切換

hover 在mouseover和mouseout之間進行切換
toggle 點擊事件切換房官,點擊第一次執(zhí)行 fn趾徽,點擊第二次執(zhí)行fn2.....


jQuery的效果

?
基本:改變高和寬

show(速度,[fn]) 顯示 當顯示成功后觸發(fā)fn
hide() 隱藏
toggle(speed [,fn]) 切換,如果隱藏就顯示易阳,如果顯示就隱藏附较。

滑動:改變高度

slideDown 吃粒,顯示(從上往下)
slideUp潦俺,隱藏(從下往上)
slideToggle() 切換

淡入淡出:改變透明度

fadeIn 顯示
fadeOut 隱藏
fadeToggle 切換
fadeTo 指定對象透明度

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市徐勃,隨后出現(xiàn)的幾起案子事示,更是在濱河造成了極大的恐慌,老刑警劉巖僻肖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肖爵,死亡現(xiàn)場離奇詭異,居然都是意外死亡臀脏,警方通過查閱死者的電腦和手機劝堪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揉稚,“玉大人秒啦,你說我怎么就攤上這事〔缶粒” “怎么了余境?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我芳来,道長含末,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任即舌,我火速辦了婚禮佣盒,結果婚禮上,老公的妹妹穿的比我還像新娘侥涵。我一直安慰自己沼撕,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布芜飘。 她就那樣靜靜地躺著务豺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗦明。 梳的紋絲不亂的頭發(fā)上笼沥,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音娶牌,去河邊找鬼奔浅。 笑死,一個胖子當著我的面吹牛诗良,可吹牛的內容都是我干的汹桦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鉴裹,長吁一口氣:“原來是場噩夢啊……” “哼舞骆!你這毒婦竟也來了?” 一聲冷哼從身側響起径荔,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤督禽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后总处,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狈惫,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年鹦马,在試婚紗的時候發(fā)現(xiàn)自己被綠了胧谈。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡荸频,死狀恐怖菱肖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情试溯,我是刑警寧澤蔑滓,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響键袱,放射性物質發(fā)生泄漏燎窘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一蹄咖、第九天 我趴在偏房一處隱蔽的房頂上張望褐健。 院中可真熱鬧,春花似錦澜汤、人聲如沸蚜迅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谁不。三九已至,卻和暖如春徽诲,著一層夾襖步出監(jiān)牢的瞬間刹帕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工谎替, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留偷溺,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓钱贯,卻偏偏與公主長得像挫掏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子秩命,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容