真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

jquery學(xué)習(xí)筆記,jquery重點(diǎn)筆記

新手如何學(xué)習(xí) jQuery?

從零開始學(xué)習(xí)jQuery (一) 開天辟地入門篇

成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計(jì)制作的公司,為廣大用戶提供了成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),成都網(wǎng)站設(shè)計(jì),1元廣告,成都做網(wǎng)站選成都創(chuàng)新互聯(lián),貼合企業(yè)需求,高性價(jià)比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。

從零開始學(xué)習(xí)jQuery (二) 萬能的選擇器

從零開始學(xué)習(xí)jQuery (三) 管理jQuery包裝集

從零開始學(xué)習(xí)jQuery (四) 使用jQuery操作元素的屬性與樣式

從零開始學(xué)習(xí)jQuery (五) 事件與事件對象

從零開始學(xué)習(xí)jQuery (六) AJAX快餐

從零開始學(xué)習(xí)jQuery (七) jQuery動畫-讓頁面動起來!

從零開始學(xué)習(xí)jQuery (九) jQuery工具函數(shù)

從零開始學(xué)習(xí)jQuery (十) jQueryUI常用功能實(shí)戰(zhàn)

從零開始學(xué)習(xí)jQuery (十一) 實(shí)戰(zhàn)表單驗(yàn)證與自動完成提示插件

一.摘要

本系列文章將帶您進(jìn)入jQuery的精彩世界, 其中有很多作者具體的使用經(jīng)驗(yàn)和解決方案, 即使你會使用jQuery也能在閱讀中發(fā)現(xiàn)些許秘籍.

本篇文章是入門第一篇, 主要是簡單介紹jQuery, 通過簡單示例指導(dǎo)大家如何編寫jQuery代碼以及搭建開發(fā)環(huán)境. 詳細(xì)講解了如何在Visual Studio中配合使用jQuery.

轉(zhuǎn)載請注明子秋出品!博客園首發(fā)!

二.前言

首先道個歉! "從零開始學(xué)習(xí)ASP.NET MVC"系列文章在即將介紹Filter時就沒有更新了, 原因就是最近我一直在研究和學(xué)習(xí)jQuery.看到本系列的名稱和文章標(biāo)題, 看過我的MVC系列文章的人會感到很熟悉. 不久要給公司的人做培訓(xùn), 所以特意制作了本教程.

在寫作的同時我參考了網(wǎng)上jQuery的系列教程文章, 在博客園和Google上并沒有找到讓我滿意的系列教程. 我喜歡將知識系統(tǒng)的,深入淺出的講解.不喜歡寫那種"學(xué)習(xí)筆記"式的文章. 同時本系列將很快全部寫完(有工作壓力就是有動力), 隨后如果時間允許我會繼續(xù)更新MVC系列文章.再一次對等待MVC文章的朋友們說聲抱歉!

另外本系列文章的大部分知識點(diǎn)來源于圖靈出版社的"jQuery實(shí)戰(zhàn)"一書. 推薦大家購買此書, 是jQuery書籍中的經(jīng)典之作.

下面讓我們開始jQuery之旅.

三.什么是jQuery

jQuery是一套Javascript腳本庫. 在我的博客中可以找到"Javascript輕量級腳本庫"系列文章. Javascript腳本庫類似于.NET的類庫, 我們將一些工具方法或?qū)ο蠓椒ǚ庋b在類庫中, 方便用戶使用.

注意jQuery是腳本庫, 而不是腳本框架. "庫"不等于"框架", 比如"System程序集"是類庫,而"ASP.NET MVC"是框架. jQuery并不能幫助我們解決腳本的引用管理和功能管理,這些都是腳本框架要做的事.

腳本庫能夠幫助我們完成編碼邏輯,實(shí)現(xiàn)業(yè)務(wù)功能. 使用jQuery將極大的提高編寫javascript代碼的效率, 讓寫出來的代碼更加優(yōu)雅, 更加健壯. 同時網(wǎng)絡(luò)上豐富的jQuery插件也讓我們的工作變成了"有了jQuery,天天喝茶水"--因?yàn)槲覀円呀?jīng)站在巨人的肩膀上了.

創(chuàng)建一個ASP.NET MVC項(xiàng)目時, 會發(fā)現(xiàn)已經(jīng)自動引入了jQuery類庫. jQuery幾乎是微軟的御用腳本庫了!完美的集成度和智能感知的支持,讓.NET和jQuery天衣無縫結(jié)合在一起!所以用.NET就要選用jQuery而非Dojo,ExtJS等.

jQuery有如下特點(diǎn):

1.提供了強(qiáng)大的功能函數(shù)

使用這些功能函數(shù), 能夠幫助我們快速完成各種功能, 而且會讓我們的代碼異常簡潔.

2.解決瀏覽器兼容性問題

javascript腳本在不同瀏覽器的兼容性一直是Web開發(fā)人員的噩夢, 常常一個頁面在IE7,Firefox下運(yùn)行正常, 在IE6下就出現(xiàn)莫名其妙的問題. 針對不同的瀏覽器編寫不同的腳本是一件痛苦的事情. 有了jQuery我們將從這個噩夢中醒來, 比如在jQuery中的Event事件對象已經(jīng)被格式化成所有瀏覽器通用的, 從前要根據(jù)event獲取事件觸發(fā)者, 在ie下是event.srcElements 而ff等標(biāo)準(zhǔn)瀏覽器下下是event.target. jQuery則通過統(tǒng)一event對象,讓我們可以在所有瀏覽器中使用event.target獲取事件對象.

3.實(shí)現(xiàn)豐富的UI

jQuery可以實(shí)現(xiàn)比如漸變彈出, 圖層移動等動畫效果, 讓我們獲得更好的用戶體驗(yàn). 單以漸變效果為例, 從前我自己寫了一個可以兼容ie和ff的漸變動畫, 使用大量javascript代碼實(shí)現(xiàn), 費(fèi)心費(fèi)力不說, 寫完后沒有太多幫助過一段時間就忘記了. 再開發(fā)類似的功能還要再次費(fèi)心費(fèi)力. 如今使用jQuery就可以幫助我們快速完成此類應(yīng)用.

4.糾正錯誤的腳本知識

這一條是我提出的, 原因就是大部分開發(fā)人員對于javascript存在錯誤的認(rèn)識. 比如在頁面中編寫加載時即執(zhí)行的操作DOM的語句, 在HTML元素或者document對象上直接添加"onclick"屬性, 不知道onclick其實(shí)是一個匿名函數(shù)等等. 擁有這些錯誤腳本知識的技術(shù)人員也能完成所有的開發(fā)工作, 但是這樣的程序是不健壯的. 比如"在頁面中編寫加載時即執(zhí)行的操作DOM的語句", 當(dāng)頁面代碼很小用戶加載很快時沒有問題, 當(dāng)頁面加載稍慢時就會出現(xiàn)瀏覽器"終止操作"的錯誤.jQuery提供了很多簡便的方法幫助我們解決這些問題, 一旦使用jQuery你就將糾正這些錯誤的知識--因?yàn)槲覀兌际怯脴?biāo)準(zhǔn)的正確的jQuery腳本編寫方法!

5.太多了! 等待我們一一去發(fā)現(xiàn).

jquery學(xué)習(xí)難點(diǎn)?

jquery 可以說是很簡單的 只要你有編程思想 其實(shí)學(xué)起來 就很簡單的

jquery 開始入門時 主要是語法 它的語法與javascript有比較大的差別

只要理解到了語法 就很簡單了

jquery基礎(chǔ) 我總結(jié)出一句話:找到元素,操作元素

就這么簡單

比如$("#idx").css("color","#aaa");

上面的理解是 找到id=idx的元素 并將它添加一個color:#aaa的css屬性

有了 jquery defered 還有用q.js必要嗎

jQuery的開發(fā)速度很快,幾乎每半年一個大版本,每兩個月一個小版本。每個版本都會引入一些新功能。今天我想介紹的,就是從jQuery 1.5.0版本開始引入的一個新功能----deferred對象。

這個功能很重要,未來將成為jQuery的核心方法,它徹底改變了如何在jQuery中使用ajax。為了實(shí)現(xiàn)它,jQuery的全部ajax代碼都被改寫了。

但是,它比較抽象,初學(xué)者很難掌握,網(wǎng)上的教程也不多。所以,我把自己的學(xué)習(xí)筆記整理出來了,希望對大家有用。

本文不是初級教程,針對的讀者是那些已經(jīng)具備jQuery使用經(jīng)驗(yàn)的開發(fā)者。如果你想了解jQuery的基本用法,請閱讀我編寫的《jQuery設(shè)計(jì)思想》和《jQuery最佳實(shí)踐》。

一、什么是deferred對象?

開發(fā)網(wǎng)站的過程中,我們經(jīng)常遇到某些耗時很長的javascript操作。其中,既有異步的操作(比如ajax讀取服務(wù)器數(shù)據(jù)),也有同步的操作(比如遍歷一個大型數(shù)組),它們都不是立即能得到結(jié)果的。

通常的解決方法是,為它們指定回調(diào)函數(shù)(callback)。即事先規(guī)定,一旦它們運(yùn)行結(jié)束,應(yīng)該調(diào)用哪些函數(shù)。

但是,在回調(diào)函數(shù)方面,jQuery的功能非常弱。為了改變這一點(diǎn),jQuery開發(fā)團(tuán)隊(duì)就設(shè)計(jì)了deferred對象。

簡單說,deferred對象就是jQuery的回調(diào)函數(shù)解決方案。 在英語中,defer的意思是"延遲",所以deferred對象的含義就是"延遲"到未來某個點(diǎn)再執(zhí)行。

它解決了如何處理耗時操作的問題,對那些操作提供了更好的控制,以及統(tǒng)一的編程接口。它的主要功能,可以歸結(jié)為四點(diǎn)。下面我們通過示例代碼,一步步來學(xué)習(xí)。

二、ajax操作的鏈?zhǔn)綄懛?/p>

jQuery的ajax操作,傳統(tǒng)寫法是這樣的:

$.ajax({

url: "test.html",

success: function(){

alert("哈哈,成功了!");

},

error:function(){

alert("出錯啦!");

}

});

(運(yùn)行代碼示例1)

在上面的代碼中,$.ajax()接受一個對象參數(shù),這個對象包含兩個方法:success方法指定操作成功后的回調(diào)函數(shù),error方法指定操作失敗后的回調(diào)函數(shù)。

$.ajax()操作完成后,如果使用的是低于1.5.0版本的jQuery,返回的是XHR對象,你沒法進(jìn)行鏈?zhǔn)讲僮?;如果高?.5.0版本,返回的是deferred對象,可以進(jìn)行鏈?zhǔn)讲僮鳌?/p>

現(xiàn)在,新的寫法是這樣的:

$.ajax("test.html")

.done(function(){ alert("哈哈,成功了!"); })

.fail(function(){ alert("出錯啦!"); });

(運(yùn)行代碼示例2)

可以看到,done()相當(dāng)于success方法,fail()相當(dāng)于error方法。采用鏈?zhǔn)綄懛ㄒ院?,代碼的可讀性大大提高。

三、指定同一操作的多個回調(diào)函數(shù)

deferred對象的一大好處,就是它允許你自由添加多個回調(diào)函數(shù)。

還是以上面的代碼為例,如果ajax操作成功后,除了原來的回調(diào)函數(shù),我還想再運(yùn)行一個回調(diào)函數(shù),怎么辦?

很簡單,直接把它加在后面就行了。

$.ajax("test.html")

.done(function(){ alert("哈哈,成功了!");} )

.fail(function(){ alert("出錯啦!"); } )

.done(function(){ alert("第二個回調(diào)函數(shù)!");} );

(運(yùn)行代碼示例3)

回調(diào)函數(shù)可以添加任意多個,它們按照添加順序執(zhí)行。

四、為多個操作指定回調(diào)函數(shù)

deferred對象的另一大好處,就是它允許你為多個事件指定一個回調(diào)函數(shù),這是傳統(tǒng)寫法做不到的。

請看下面的代碼,它用到了一個新的方法$.when():

$.when($.ajax("test1.html"), $.ajax("test2.html"))

.done(function(){ alert("哈哈,成功了!"); })

.fail(function(){ alert("出錯啦!"); });

(運(yùn)行代碼示例4)

這段代碼的意思是,先執(zhí)行兩個操作$.ajax("test1.html")和$.ajax("test2.html"),如果成功了,就運(yùn)行done()指定的回調(diào)函數(shù);如果有一個失敗或都失敗了,就執(zhí)行fail()指定的回調(diào)函數(shù)。

五、普通操作的回調(diào)函數(shù)接口(上)

deferred對象的最大優(yōu)點(diǎn),就是它把這一套回調(diào)函數(shù)接口,從ajax操作擴(kuò)展到了所有操作。也就是說,任何一個操作----不管是ajax操作還是本地操作,也不管是異步操作還是同步操作----都可以使用deferred對象的各種方法,指定回調(diào)函數(shù)。

我們來看一個具體的例子。假定有一個很耗時的操作wait:

var wait = function(){

var tasks = function(){

alert("執(zhí)行完畢!");

};

setTimeout(tasks,5000);

};

我們?yōu)樗付ɑ卣{(diào)函數(shù),應(yīng)該怎么做呢?

很自然的,你會想到,可以使用$.when():

$.when(wait())

.done(function(){ alert("哈哈,成功了!"); })

.fail(function(){ alert("出錯啦!"); });

但是,有一個問題。$.when()的參數(shù)只能是deferred對象,所以必須對wait進(jìn)行改寫:

var dtd = $.Deferred(); // 新建一個deferred對象

var wait = function(dtd){

var tasks = function(){

alert("執(zhí)行完畢!");

dtd.resolve(); // 改變deferred對象的執(zhí)行狀態(tài)

};

setTimeout(tasks,5000);

return dtd.promise();

};

這里有兩個地方需要注意。

首先,最后一行不能直接返回dtd,必須返回dtd.promise()。原因是jQuery規(guī)定,任意一個deferred對象有三種執(zhí)行狀態(tài)----未完成,已完成和已失敗。如果直接返回dtd,$.when()的默認(rèn)執(zhí)行狀態(tài)為"已完成",立即觸發(fā)后面的done()方法,這就失去回調(diào)函數(shù)的作用了。dtd.promise()的目的,就是保證目前的執(zhí)行狀態(tài)----也就是"未完成"----不變,從而確保只有操作完成后,才會觸發(fā)回調(diào)函數(shù)。

其次,當(dāng)操作完成后,必須手動改變Deferred對象的執(zhí)行狀態(tài),否則回調(diào)函數(shù)無法觸發(fā)。dtd.resolve()的作用,就是將dtd的執(zhí)行狀態(tài)從"未完成"變成"已完成",從而觸發(fā)done()方法。

最后別忘了,修改完wait之后,調(diào)用的時候就必須直接傳入dtd參數(shù)。

$.when(wait(dtd))

.done(function(){ alert("哈哈,成功了!"); })

.fail(function(){ alert("出錯啦!"); });

(運(yùn)行代碼示例5)

六、普通操作的回調(diào)函數(shù)接口(中)

除了使用$.when()為普通操作添加回調(diào)函數(shù),還可以使用deferred對象的建構(gòu)函數(shù)$.Deferred()。

這時,wait函數(shù)還是保持不變,我們直接把它傳入$.Deferred():

$.Deferred(wait)

.done(function(){ alert("哈哈,成功了!"); })

.fail(function(){ alert("出錯啦!"); });

(運(yùn)行代碼示例6)

jQuery規(guī)定,$.Deferred()可以接受一個函數(shù)作為參數(shù),該函數(shù)將在$.Deferred()返回結(jié)果之前執(zhí)行。并且,$.Deferred()所生成的Deferred對象將作為這個函數(shù)的默認(rèn)參數(shù)。

七、普通操作的回調(diào)函數(shù)接口(下)

除了上面兩種方法以外,我們還可以直接在wait對象上部署deferred接口。

var dtd = $.Deferred(); // 生成Deferred對象

var wait = function(dtd){

var tasks = function(){

alert("執(zhí)行完畢!");

dtd.resolve(); // 改變Deferred對象的執(zhí)行狀態(tài)

};

setTimeout(tasks,5000);

};

dtd.promise(wait);

wait.done(function(){ alert("哈哈,成功了!"); })

.fail(function(){ alert("出錯啦!"); });

wait(dtd);

(運(yùn)行代碼示例7)

這里的關(guān)鍵是dtd.promise(wait)這一行,它的作用就是在wait對象上部署Deferred接口。正是因?yàn)橛辛诉@一行,后面才能直接在wait上面調(diào)用done()和fail()。

八、小結(jié):deferred對象的方法

前面已經(jīng)講到了deferred對象的多種方法,下面做一個總結(jié):

(1)$.Deferred()生成一個deferred對象。

(2)deferred.done()指定操作成功時的回調(diào)函數(shù)

(3)deferred.fail()指定操作失敗時的回調(diào)函數(shù)

(4)deferred.promise()沒有參數(shù)時,作用為保持deferred對象的運(yùn)行狀態(tài)不變;接受參數(shù)時,作用為在參數(shù)對象上部署deferred接口。

(5)deferred.resolve()手動改變deferred對象的運(yùn)行狀態(tài)為"已完成",從而立即觸發(fā)done()方法。

(6)$.when()為多個操作指定回調(diào)函數(shù)。

除了這些方法以外,deferred對象還有三個重要方法,上面的教程中沒有涉及到。

(7)deferred.then()

有時為了省事,可以把done()和fail()合在一起寫,這就是then()方法。

$.when($.ajax( "/main.php" ))

.then(successFunc, failureFunc );

如果then()有兩個參數(shù),那么第一個參數(shù)是done()方法的回調(diào)函數(shù),第二個參數(shù)是fail()方法的回調(diào)方法。如果then()只有一個參數(shù),那么等同于done()。

(8)deferred.reject()

這個方法與deferred.resolve()正好相反,調(diào)用后將deferred對象的運(yùn)行狀態(tài)變?yōu)?已失敗",從而立即觸發(fā)fail()方法。

(9)deferred.always()

這個方法也是用來指定回調(diào)函數(shù)的,它的作用是,不管調(diào)用的是deferred.resolve()還是deferred.reject(),最后總是執(zhí)行。

$.ajax( "test.html" )

.always( function() { alert("已執(zhí)行!");} );

ajax怎么把取到的文本寫到變量?

alert( ajx ); 肯定不會顯示獲取到的文本。

一、因?yàn)?ajx 是 XMLHttpRequest 對象,不是返回的文本 ajx.responseText。

二、alert( ajx ) 這句代碼要放到正確的位置,放到 document.querySelector('.cont')......的這句下面;不應(yīng)該放到 onreadystatechange 事件函數(shù)的外面。

正確的寫法是在 document.querySelector('.cont')...... 這行下面加上一句:

alert( ajx.responseText );


分享題目:jquery學(xué)習(xí)筆記,jquery重點(diǎn)筆記
標(biāo)題網(wǎng)址:http://weahome.cn/article/dsddheh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部