麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

jQuery版本的演變

2019-11-11 05:52:36
字體:
供稿:網(wǎng)友

2005年8月,John Resig提議改進(jìn)PRototype的“Behaviour”庫,于是他在blog上發(fā)表了自己的想法,并用了3個(gè)例子做說明。 第一個(gè)例子是為元素注冊(cè)一個(gè)事件:

Behaviour.register({ '#example li': function(e) { e.onclick = function() { this.parentNode.removeChild(this); } }});

他認(rèn)為應(yīng)該改寫為:

$('#example li').bind('click',function() { this.parentNode.removeChild(thsi);});

第二個(gè)例子是為不同的元素注冊(cè)不同的事件:

Behaviour.register({ 'b.someclass':function(e) { e.onclick = function() { alert(this.innerHTML); }; }, '#someid u': function(e) { e.onmouSEOver = function() { this.innerHTML = 'YYUU'; }; }});

他認(rèn)為應(yīng)該改寫為:

$('b.someclass').bind('click',function(){ alert(this.innerHTML);});$('#someid u').bind('mouseover',function() { this.innerHTML = 'yyuu';});

第三個(gè)例子是為不斷變化的元素注冊(cè)不同的事件:

Behaviour.register({ '#foo ol li':function(a) { a.title = 'List Items'; a.onclick = function() { alert('Hello'); }; }, '#foo ol li.tem':function(a) { a.style.color = 'white'; }, '#foo ol li.tem .foo':function(a) { a.style.background = 'red'; }});

他認(rèn)為應(yīng)該改寫為:

$('#foo ol li).set('title','List Items') .bind('click',function(){ alert('hello'); }).select('.tmp').style('color','white') .select('.foo') .style('background','red');

這些代碼也是jQuery語法的最初雛形。當(dāng)時(shí)John的想法很簡(jiǎn)單:它發(fā)現(xiàn)這種語法相對(duì)現(xiàn)有的javaScript庫更為簡(jiǎn)潔。但它沒想到的是,這篇文章一經(jīng)發(fā)布就引起了業(yè)界的廣泛關(guān)注。于是John開始認(rèn)真思考著這件事情(編寫語法更為簡(jiǎn)潔的Javascript程序庫),直到2006年1月14日,John正式宣布以jQuery的名稱發(fā)布自己的程序庫。隨之而來的是jQuery的快速發(fā)展。

2006年8月,jQuery的第一個(gè)穩(wěn)定版本,并且已經(jīng)支持CSS選擇符、事件處理和Ajax交互。

2007年7月,jQuery 1.1.3版發(fā)布,這次小版本的變化包含了對(duì)jQuery選擇符引擎執(zhí)行速度的顯著提升。從這個(gè)版本開始,jQuery的性能達(dá)到了Prototype、Mootools以及Dojo等同類JavaScript庫的水平。同年9月,jQuery 1.2版發(fā)布,它去掉了對(duì)XPath選擇符的支持,原因是相對(duì)于CSS語法它已經(jīng)變得多余了。這一版能夠?qū)πЧM(jìn)行更為靈活的定制,而且借助新增的命名空間事件,也使插件開發(fā)變得更容易。同事,jQuery UI項(xiàng)目也開始啟動(dòng),這個(gè)新的套件是作為曾經(jīng)流行但已過時(shí)的Interface插件的替代項(xiàng)目而發(fā)布的。jQuery UI中包含大量預(yù)定義好的部件(widget),以及一組用于構(gòu)建高級(jí)元素(例如可拖放、拖拽、排序)的工具。

2008年5月,jQuery 1.2.6版發(fā)布,這版主要是將Brandon Aaron開發(fā)的流行的Dimensions插件的功能移植到了核心庫中,同時(shí)也修改了許多BUG,而且有不少的性能得到提高。因此,如果把你以前的jQuery版本升級(jí)到1.2.6,那么你完全可以從你的代碼中排除Dimensions插件。

在jQuery迅速發(fā)展的同事,一些大的廠商也看中了商機(jī)。2009年9月,微軟和諾基亞公司正式宣布支持開源的jQuery庫,另外,微軟公司還宣稱他們將把jQuery作為Visual Studio工具集的一部分。他將提供包括jQuery的智能提示、代碼片段、示例文檔編制等內(nèi)容在內(nèi)的功能。微軟和諾基亞公司將長期稱為jQuery的用戶成員,其他成員還有Google、Intel、IBM、Intuit等公司。

2009年1月,jQuery 1.3版發(fā)布,它使用了全新的選擇符引擎Sizzle,在各個(gè)瀏覽器下全面超越其他同類型JavaScript框架的查詢速度,程序庫的性能也因此有了極大提升。這一版本的第2個(gè)變化就是提供live()方法,使用live()方法可以為當(dāng)前及將來增加的元素綁定事件,在1.3版本之前,如果要為將來增加的元素綁定事件,需要使用livequery插件,而在1.3版中,可以直接用live()方法。

注意: Sizzle是jQuery作者John Resig新寫的DOM選擇器引擎。Sizzle有一個(gè)重要的特點(diǎn),它是完全獨(dú)立于jQuery的,如果你不想用jQuery,可以只用Sizzle。Sizzle下載地址:http://sizzlejs.com/

2010年1月,也是jQuery的四周年生日,jQuery 1.4版發(fā)布,為了慶祝jQuery四周歲生日,jQuery團(tuán)隊(duì)特別創(chuàng)建了jQuery14.com站點(diǎn),帶來了連續(xù)14天的新版本專題介紹。

在1.3及更早版本中,jQuery通過JavaScript的eval方法來解析json對(duì)象。在1.4中,如果你用的瀏覽器支持,則會(huì)使用原生的JSON.parse解析json對(duì)象,這樣對(duì)json對(duì)象的書寫驗(yàn)證則更為嚴(yán)格。比如:{foo:”bar”}的寫法將不會(huì)被驗(yàn)證為合法的json對(duì)象,必須寫成{“foo”:”bar”}。如果你的程序打算升級(jí)到1.4版本,那么這一點(diǎn)要尤其注意。

2010年2月,jQuery 1.4.2版發(fā)布,它新增了有關(guān)事件委托的兩個(gè)方法:delegate()和undelegate()。delegate()用于替代1.3.2中的live()方法。這個(gè)方法比live()來的方便,而且也可以達(dá)到動(dòng)態(tài)添加事件的作用。比如給表格的每個(gè)td綁定hover事件,代碼如下:

//1.4.2$("table").delegate("td","hover",function() { $(this).toggleClass("hover");});//1.3.2$("table").each(function() { $("td",this).live("hover",function() { $(this).toggleClass("hover"); });});

2011年1月,jQuery 1.5版發(fā)布。該版本做了如下修改: ● 重寫Ajax模塊 (1)最大的變化時(shí)調(diào)用jQuery.ajax(或jQuery.get,jQuery.post等)會(huì)返回jqXHR的對(duì)象,為不同瀏覽器內(nèi)置的xmlHttpRequest對(duì)象提供了一致的超集,可以完成以前不可能完成的任務(wù),比如:中止JSONP請(qǐng)求。 (2)提供了更高級(jí)的統(tǒng)一的API。 (3)更好的擴(kuò)展性,可以方便地?cái)U(kuò)張Ajax的發(fā)送與接收,管理Ajax請(qǐng)求。 ● 新增延遲對(duì)象 開發(fā)人員借此可以使用無法立即獲得的返回值(如異步Ajax請(qǐng)求的返回結(jié)果),而且第一次能夠附加多個(gè)事件處理器。 比如,使用新的jQuery Ajax API實(shí)現(xiàn)下面的代碼:

//發(fā)出請(qǐng)求,并記住jqxhr對(duì)象var jqxhr = $.ajax({url:"example.php"}) .success(function(){alert("success");}) .error(function(){alert("error");}) .complete(function(){alert("complete");});//這里可以做其它工作...//完成另一功能jqxhr.complete(function(){alert("second complete");});

● jQuery.sub() 可以方便地創(chuàng)建jQuery副本,不影響原有的jQuery對(duì)象,避免jQuery沖突,實(shí)例代碼如下:

(function(){ var sub$ = jQuery.sub(); sub$.fn.myCustomMethod = function(){ return 'just for me'; }; sub$(document).ready(function(){ sub$('body').myCustomMethod(); //'just for me' });})();

● 內(nèi)部開發(fā)系統(tǒng) jQuery團(tuán)隊(duì)內(nèi)部開發(fā)系統(tǒng)的兩點(diǎn)改變:已是服務(wù)器端用NodeJS替換了老的Java/Rhino系統(tǒng),使得團(tuán)隊(duì)可以專注于JavaScript環(huán)境的新變化;二是所用的代碼壓縮優(yōu)化程序從Google Closure Compiler 切換到UglifyJS,新工具的壓縮效果非常令人滿意。

2011年5月,jQuery 1.6版發(fā)布。該版本重寫了Attribute模塊和大量的性能改進(jìn)。值得注意的是此次更新有2個(gè)破壞性的變更,將會(huì)影響到現(xiàn)有打算升級(jí)到1.6的那些項(xiàng)目。 ● 變更1:更新data()方法 在jQuery1.5中,data()方法可以用來將元素上的數(shù)據(jù)屬性轉(zhuǎn)化為JSON形式的值。jQuery 1.6已經(jīng)更新了此功能,data()方法獲取的值會(huì)以駝峰形式展示,以配合W3C HTML5 規(guī)范。比如:

//html:<span data-max-value="15" data-min-value="5"></span>//js:$('span').data(); //jQuery 1.5.2輸出:{"max-value":15,"min-value":5}$('span').data(); //jQuery 1.6輸出:{"maxValue":15,"minValue":5}

●變更2: 獨(dú)立方法處理DOM屬性,以區(qū)分DOM的attributes和properties 一般情況下,attributes表示從文檔中獲取DOM的狀態(tài)信息,而properties表示元素的動(dòng)態(tài)狀態(tài)信息。比如:

//html:<input type="text" value="abc">//js:$("input:text").attr('value'); //輸出abc$("input:text").prop('value'); //輸出abc

如果用戶手動(dòng)改變文本框的值為”abcdef”,那么:

$("input:text").attr('value'); //輸出abc$("input:text").prop('value'); //輸出abcdef

同樣,如果網(wǎng)頁中的復(fù)選框的代碼如下: <input type="checkbox" checked /> 那么結(jié)果也會(huì)有所不同:

$(":checkbox").attr('checked'); //輸出'',空字符串$(":checkbox").prop('checked'); //輸出true

所以在jQuery 1.6中,如果要判斷復(fù)選框是否選中,需在事件處理程序中使用:

$(this).prop("checked");//或者$(this).is(":checked")

由于jQuery 1.6對(duì)attr()方法的改變,導(dǎo)致很多使用attr()方法的程序出現(xiàn)問題,必須修改為1.6的語法才能使用,這個(gè)不向前兼容的改變引起了開發(fā)的強(qiáng)烈不滿。于是在不到10天的時(shí)間里,jQuery 1.6.1發(fā)布,它調(diào)整了attr()方法,使其兼容1.6之前的做法。比如:

$(":checkbox").attr("checked",true);$("option").attr("selected",true);$("input").attr("readonly",true);$("input").attr("disabled",true);if($(":checkbox").attr("checked")) { /* Do something */}

2011年,11月,jQuery 1.7版發(fā)布。該版本做了如下修改: ● 新的事件API:on()和off() 新的on()和off()API統(tǒng)一了jQuery中所有對(duì)文檔綁定事件的操作,而且它們也更加簡(jiǎn)短。代碼如下:

$(elements).on(events[,selector][,data],handler);$(elements).off([events][,selector][,handler]);

其中on()替代了之前版本中的bind()、delegate()和live();off()替代了unbind()、undelegate()和die()。下面代碼是新舊API調(diào)用之間對(duì)應(yīng)的例子:

$('a').bind('click',myHandler); //舊$('a').on('click',myHandler); //新$('form').bind('submit',{val:42},fn); //舊$('form').on('submit',{val:42},fn); //新$(window).unbind('scroll.myPlugin'); //舊$(window).off('scroll.myPlugin'); //新$('.comment').delegate('a.add','click',addNew); //舊$('.comment').on('click','a.add',addNew); //新$('.dialog').undeledate('a','click.myDlg'); //舊$('.dialog').off('click.myDlg','a'); //新$('a').live('click',fn); //舊$(document).on('click','a',fn); //新$('a').die('click'); //舊$(document).off('click','a'); //新

● 事件委托的性能改進(jìn) 隨著頁面大小和復(fù)雜度的不斷增長,事件委托變得越來越重要。比如Backbone,JavaScriptMVC和Sproutcore等應(yīng)用框架都使用了大量的事件委托。考慮到這一點(diǎn),jQuery 1.7重構(gòu)了事件委派,使其更加快速,尤其是在大多數(shù)常見情況下。

● 更好地支持IE 6/7/8下的HTML5 任何試圖在IE 6/7/8中使用新的類似于<section>的HTML5標(biāo)簽,毫無疑問都會(huì)遇到IE6/7/8無法解析這些標(biāo)簽,甚至將這些標(biāo)簽從文檔中移除的問題。在jQuery 1.7中,為較舊IE版本中html()一類的方法建立了對(duì)HTML5的支持。這一功能和以前的innerShiv相同,但你仍然需要在你的文檔頭部加入HTML5Shiv(或者M(jìn)odernizr)以使舊IE版本支持HTML5標(biāo)簽。

● 更直觀地切換動(dòng)畫 在jQuery的舊版本中,類似于slideToggle()或fadeToggle()的切換動(dòng)畫在互相堆放和前一個(gè)動(dòng)畫被stop()終止時(shí)無法正常工作。在1.7版本中這一情況被修復(fù),動(dòng)畫系統(tǒng)會(huì)記住元素的初始值并在一個(gè)切換的動(dòng)畫被提前終止時(shí)充值它們。

● 異步模塊定義(AMD) jQuery 1.7支持AMD規(guī)范,可以和遵循AMD規(guī)范的腳本加載器協(xié)作,比如RequireJS或者curl.js。

● jQuery.Deferred jQuery.Deferred對(duì)象除了提供新的進(jìn)度處理及通知方法之外,同事也新增一個(gè)可用來取得目前Deferred狀態(tài)的state()方法。Dederred也通過jQuery.Callbacks機(jī)制來提供給開發(fā)者一個(gè)統(tǒng)一的事件處理接口。

● jQuery.isNumeric() 在使用jQuery的過程中,有時(shí)候需要知道一個(gè)參數(shù)是數(shù)值或可以被成功的轉(zhuǎn)化為數(shù)值的情況。所以jQuery開發(fā)并公開jQuery.isNumeric()方法。為它傳遞一個(gè)任意類型的參數(shù),它將對(duì)應(yīng)的返回true或false。

● 棄用和刪除的功能 jQuery將開始棄用過時(shí)的特性,以使代碼庫更加精簡(jiǎn),同時(shí)提供性能。比如live()和die()已在1.7版本中被棄用,這些方法還將繼續(xù)有效,但為了兼容以后的版本不建議使用它們,可以使用on()、off()和delegate()之類的代替。

jQuery.isNaN():這一未公開的實(shí)用函數(shù)已被刪除,新的jQuery.isNumeric()提供了類似的功能,并且可以被更好的支持。

jQuery.event.proxy():這一未公開和過時(shí)的方法已被刪除,開發(fā)者應(yīng)使用公開的jQuery.proxy方法代替。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美国产永久免费看片 | 一级黄色免费大片 | 日韩视频在线观看免费视频 | 午夜视频导航 | 成人三级视频网站 | 成人影片在线免费观看 | 羞羞网站视频 | 三级国产三级在线 | av电影免费在线 | 国色天香综合网 | 麻豆视频在线观看 | 天天夜夜草 | 久久久久.com| 毛片av网 | 黄色片网站在线播放 | 狠狠干夜夜草 | 欧美精品国产综合久久 | 三级xxxx | 欧美一级黄色免费看 | 一日本道久久久精品国产 | 欧美色淫 | 久久草在线观看视频 | 欧美爱爱视频免费看 | av在线播放免费 | 免费永久看羞羞片网站入口 | 国产免费久久久久 | 欧美激情猛片xxxⅹ大3 | 久久精品性视频 | 成人一级片毛片 | 亚洲欧美国产精品va在线观看 | 热99在线视频 | 精品久久久久久久久久久αⅴ | 91精品国产日韩91久久久久久360 | 欧美爱爱视频免费看 | 宅男噜噜噜66一区二区 | 久国久产久精永久网页 | 日产精品久久久一区二区福利 | 欧美成人精品一区二区男人小说 | 91av亚洲| 日本在线视频免费 | 特级a欧美做爰片毛片 |