JQuery

jQuery, JavaScript գրադարան, որը կենտրոնացված է JavaScript-ի և HTML-ի փոխազդեցությունն հեշտացնելու համար։ jQuery գրադարանի օգնությամբ կարելի է հեշտությամբ ընտրել DOM տարրը, դիմել դրա ատրիբուտներին ու բովանդակությանը, փոփոխել դրանք։ jQuery-ն ունի նաև AJAX-ի հետ աշխատելու համար պարզ և հասկանալի API։

 Ստեղծման պատմությունը 
Երբ Ջոն Ռեզիգը սկսեց հետաքրքրվել ծրագրավորմամբ, առաջինը, ինչ նա ուսումնասիրեց վեբ-ծրագրավորումից, դա HTML-ն էր։ Ռեզինգն արդեն կարողանում էր ծրագրավորել QBasic-ով, երբ իր ծանոթներից մեկը ցուցադրեց, թե ինչպես կարելի է ստեղծել վեբ-էջ Angelfire ծրագրի միջոցով՝ օգտագործելով HTML-ը։ Հայրը Սուրբ ծննդյան տոներին նվիրեց նրան HTML-ի երկու գիրք։ Այն ժամանակ, երբ նա սկսեց ծրագրավորել Visual Basic լեզվով, HTML-ն ու վեբ-դիզայնը սկսեցին հետաքրքրել նրան։

Բայց JavaScript-ի նկատմամբ իր հետաքրքրությունը սկսեց ավելի ուշ, մոտավորապես 2004 թ.։ Այդ տարի Ռեզինգը համակարգչային գիտությունների ոլորտում աստիճան ստացավ և, որոշ ժամանակ անց, կես դրույքով սկսեց աշխատել տեղական Brand Logic ընկերությունում։ Նա զբաղվում էր մի կայքի դիզայնով, որտեղ ստեղծվում էր scroll էֆեկտ։ Ջոնին դուր չէր գալիս այն, որ ինքն ստիպված է օգտագործել այլ մշակողների կոդը։ Նա որոշեց, որ պետք է լուրջ ուսումնասիրի JavaScript-ը։ Ուսումնասիրելով այն, նա հասկացավ, որ JavaScript-ը պարզ, բայց նուրբ լեզու է։ Այն բավականին հզոր է և կարող է օգնել լուծել բավականին լուրջ և դժվար խնդիրներ։ Հաջորդ մի քանի տարիների ընթացքում Ջոնը ստեղծեց տարբեր JavaScript ծրագրեր, մինչև ավարտեց jQuery-ի մշակումը։ jQuery-ի ստեղծման հիմնական նպատակն էր գրել JavaScript-ի հետ աշխատանքը հեշտացնող բազմանգամյա օգտագործման կոդեր, ինչպես նաև դրա միջոցով մոռանալ տարբեր բրաուզերների կողմից այս կամ այն բանի աջակցության մասին։ Գրադարանը ներկայացվեց 2006 թվականին Նյու-Յորքում կայացած «BarCamp» կոնֆերանսի ժամանակ։

 Առանձնահատկություններ 
 Բոլոր առաջատար բրաուզերներում աշխատող CSS ընտրիչների Sizzle շարժիչըCSS selector engine, որն առանձնացված է այլ նախագծում,
 Անցումը DOM-ի տարբեր մասերի ինչպես վերը նշված CSS ընտրիչների, այնպես էլ XPath-ի միջոցով (վերջինի համար հարկավոր է տեղադրել հատուկ հավելված),
 Իրադարձություններ,
 Տեսողական էֆեկտներ,
 AJAX,
 JavaScript հավելվածներ (փլագիններ)։

 Օգտագործումը 
jQuery-ն, որպես կանոն, միացվում է HTML փաստաթղթին ինչպես սովորական JavaScript ֆայլ։

<head>
    <script type="text/javascript" src="path/to/jQuery.js"></script>
</head>

jQuery-ի հետ ամբողջ աշխատանքը հիմնականում կատարվում է $ ֆունկցիայի միջոցով։ Եթե կայքում jQuery-ից բացի օգտագործվում են այլ JavaScript գրադարաններ, որոնցում $ նշանը օգտագործվում է այլ նպատակներով, ապա դրա փոխարեն կարելի է օգտագործել այլ ֆունկցիայի հոմանիշը՝ jQuery ֆունկցիան։ Երկրորդ եղանակով կատարվող աշխատանքը համարվում է ավելի ճիշտ։ Բայց, որպեսզի երկրորդ եղանակով գրված կոդը շատ մեծ չստացվի, կարելի է այն գրել հետևյալ կերպ.
jQuery(function($) {
  // այստեղ $ նշանը միշտ համարվում է jQuery օբյեկտ անկախ այլ գրադարանների առկայությունից
})

jQuery-ի հետ աշխատանքը կարելի է բաժանել 2 տեսակի՝
 $() ֆունկցիայի միջոցով jQuery օբյեկտի ստացում։ Օրինակ, որպես այդ ֆունկցիայի պարամետր գրելով որևէ CSS ընտրիչ, կարելի է ստանալ այդ ընտրիչին համապատասխանող HTML տարրերի jQuery օբյեկտը, որի տարբեր մեթոդների միջոցով մենք կարող ենք աշխատել այդ տարրերի հետ։ Եթե մեթոդը ոչինչ չունի վերադարձնելու, ապա այն վերադարձնում է այդ jQuery օբյեկտի հղումը։ Դա հնարավորությունն է տալիս կիրառել, այսպես կոչված, «հոսող միջերես»։
 $ օբյեկտի գլոբալ պարամետրերի կանչում։

Այս օրինակում ներկայացված է, թե ինչպես կարելի է ընտրել միանգամից մի քանի DOM հանգույցներ։ Այստեղ $ ֆունկցիային տրվում է որոշակի CSS ընտրիչ, որի արդյունքում ֆունկցիան վերադարձնում է jQuery օբյեկտ։ Այդ օբյեկտը իր մեջ պարունակում է HTML էջի որոշակի քանակով տարրեր։ Այնուհետև այդ տարրերի հետ jQuery-ի մեթոդների միջոցով փոփոխություններ է կատարվում։
$("div.test").add("p.quote").addClass("blue").slideDown("slow");
jQuery-ն գտնում է էջի բոլոր div տարրերը, որոնք ունեն test դաս, ինչպես նաև բոլոր p տարրերը, որոնք ունեն quote դաս, այնուհետև բոլոր դրանց ավելացնում է blue դաս և տեսանելիորեն դանդաղ իջեցնում է դրանք։
Այստեղ add, addClass և slideDown մեթոդները վերադարձնում են ընթացիկ $("div.test") օբյեկտի հղումը։ Հենց դրա շնորհիվ է, որ հնարավոր է դառնում այսպիսի շղթա ստեղծել։

$.-ով սկսվող մեթոդները հարմար են կիրառել գլոբալ օբյեկտների վերամշակման համար։
$.each([1,2,3], function() {
  document.write(this + 1);
});
Այս օրինակում էջի վրա կերևա 234 գրառումը։

$.ajax-ը և այլ համապատասխան ֆունկցիաներ հնարավորություն են տալիս օգտագործել AJAX-ի մեթոդները։ Օրինակ՝
$.ajax({
  type: "POST",
  url: "some.php",
  data: {name: 'John', location: 'Boston'},
  success: function(msg){
    alert( "Data Saved: " + msg );
  }
});
Այս օրինակում դիմում ենք some.php սկրիպտին name=John&location=Boston պարամետրերով, իսկ ստացված արդյունքը արտարծվում է alert()-ի միջոցով։

Իսկ ահա այս օրինակում մենք jQuery―ի միջոցով տարրին ավելացնում ենք click իրադարձության վերամշակիչ՝
  $("a").click(function() {
    alert("Hello world!");
  });
Տվյալ դեպքում, <A> տարրին մկնիկով կտտացնելուց հետո կկատարվի alert("Hello world!") կոդը, այսինքն՝ կարտարծվի «Hello world!» արտահայտությունը։

 Տարբերակների պատմությունը 
 Տարբերակ ՀղումներԹողարկման ամսաթիվ Փոփոխությունները 1.0 -  30 հունիսի, 2006 թ. Առաջին alpha-տարբերակը 1.0 սեղմ. 26 օգոստոսի, 2006 թ. Գրադարանի առաջին ստաբիլ տարբերակը։ Այս տարբերակից հետո պարզ դարձավ, որ մշակողները մտադիր են ավելացնել CSS ընտրիչների, AJAX տեխնոլոգիայի և իրադարձությունների մեխանիզմի աջակցությունը։ 1.0.1 սեղմ., չսեղմ. 31 օգոստոսի, 2006 թ. Առաջին տարբերակը՝ սխալների ուղղմամբ 1.0.2 սեղմ., չսեղմ. 9 հոկտեմբերի, 2006 թ. Կիրառական ծրագրավորման միջերեսի փոփոխություն 1.0.3 սեղմ., չսեղմ. 27 հոկտեմբերի, 2006 թ. -  1.0.4 սեղմ., չսեղմ. 12 դեկտեմբերի, 2006 թ. -  1.1a -  8 հունվարի, 2007 թ. Alpha-տարբերակ 1.1b -  11 հունվարի, 2007 թ. Beta-տարբերակ 1.1 սեղմ., չսեղմ. 14 հունվարի, 2007 թ. Այս տարբերակում գրադարանի API-ն լուրջ փոփոխությունների է ենթարկվել։ Որոշ հազվադեպ օգտագործվող մեթոդներ միացվել են իրար, ինչի շնորհիվ կրճատվել է մեթոդների թիվը։ 1.1.1 սեղմ., չսեղմ. 22 հունվարի, 2007 թ. -  1.1.2 սեղմ., չսեղմ. 27 փետրվարի, 2007 թ. -  1.1.3a -  20 մայիսի, 2007 թ. Alpha-տարբերակ 1.1.3 սեղմ., չսեղմ. 1 հուլիսի, 2007 թ. Այս տարբերակում զգալիորեն բարելավվեց jQuery-ի ընտրիչների մեխանիզմի արտադրողականությունը։ Սկսած այս տարբերակից, jQuery-ի արտադրողականությունը կարելի էր համեմատել այնպիսի JavaScript գրադարանների հետ, ինչպիսիք են Prototype-ը, Mootools-ը և Dojo-ն։ Ընդամենը 20 ԿԲ ծավալով գրադարնում արագագործությունը մեծացվեց ավելի քան 8 անգամ1.1.3 թողարկման մասին գրառումը jQuery-ի պաշտոնական բլոգում 1.1.3.1 սեղմ., չսեղմ. 5 հուլիսի, 2007 թ. -  1.1.4 սեղմ., չսեղմ. 24 օգոստոսի, 2007 թ. -  1.2 փոքր., սեղմ., չսեղմ. 10 սեպտեմբերի, 2007 թ. Այս տարբերակից հեռացվեց տարրերի ընտրման XPath եղանակը, քանի որ CSS ընտրիչների առկայության դեպքում այն արդեն անօգուտ էր դարձել։ Այս տարբերակում էֆեկտների կարգավորումն ավելի ճկուն դարձավ, իսկ անվանատարածքներում իրադարձությունների կառավարման տրամաբանության ավելացման շնորհիվ ընդլայնումների մշակումն ավելի հեշտացավ։ 1.2.1 փոքր., սեղմ., չսեղմ. 16 սեպտեմբերի, 2007 թ. -  1.2.2 փոքր., սեղմ., չսեղմ. 15 հունվարի, 2008 թ. -  1.2.3 փոքր., սեղմ., չսեղմ. 8 փետրվարի, 2008 թ. -  1.2.4 փոքր., սեղմ., չսեղմ. 19 մայիսի, 2008 թ. -  1.2.5 փոքր., սեղմ., չսեղմ. 21 մայիսի, 2008 թ. -  1.2.6 փոքր., սեղմ., չսեղմ., փաստ. 24 մայիսի, 2008 թ. Հիմնական գրադարանում ներառվեցին ընդլայնումների հայտնի մոդուլի՝ Dimensions-ի ֆունկցիոնալ հնարավորությունները։ 1.3 փոքր., չսեղմ., փաստ. 14 հունվարի, 2009 թ. Ընտրիչների մեխանիզմը (Sizzle-ը) զգալիորեն փոփոխվեց, ինչի շնորհիվ գրադարանի արտադրողականությունը նույնպես զգալիորեն մեծացավ։ Ավելացվեց live() մեթոդը։ 1.3.1 փոքր., չսեղմ., փաստ. 21 հունվարի, 2009 թ. -  1.3.2 փոքր., չսեղմ., փաստ. 20 փետրվարի, 2009 թ. -  1.4 փոքր., չսեղմ. 14 հունվարի, 2010 թ. Իրադարձությունների վերամշակման օպտիմիզացում։ Նոր .closest(Array) մեթոդի ավելացում։ Հիմնական ֆունկցիաների արագագործությունը ավելացել է ավելի քան 3 անգամ 1.4.1 փոքր., չսեղմ. 25 հունվարի, 2010 թ. Վերանվանվել են կենտրոնացում ստանալու և կորցնելու իրադարձությունները։ .die()-ը հեռացնում է .live()-ի միջոցով հետևվող իրադարձությունների վերամշակիչները։ jQuery.error()-ը գեներացնում է բացառությունները։ .height() և .width() մեթոդները վերադարձնում են առաջին գտնված տարրի՝ բրաուզերի կողմից հաշվված, համապատասխանաբար, բարձրությունն ու լայնությունը։ jQuery.parseJSON()-ի վերածում է JSON տեղը սովորական օբյեկտի։ 1.4.2 փոքր., չսեղմ. 19 փետրվարի, 2010 թ. Ավելացվել են նոր .delegate() և .undelegate() մեթոդները։ Բարելավվել է .bind(), .unbind(), .empty(), .remove() և .html() մեթոդների արտադրողականությունը։ 1.4.3 փոքր., չսեղմ. 16 հոկտեմբերի, 2010 թ. Բազմաթիվ փոփոխություններ։ 1.4.4 փոքր., չսեղմ. 11 նոյեմբերի, 2010 թ. Ավելացվել է .fadeToggle() մեթոդը 1.5 փոքր., չսեղմ. 31 հունվարի, 2011 թ. Վերագրված է AJAX-ի մոդուլը։ Ավելացվել է .sub() մեթոդը, որը թույլ է տալիս կլոնավորել jQuery օբյեկտները։ .children(), .prev() և .next() մեթոդների կատարման բարձր արագություն։ 1.5.1 փոքր., չսեղմ. 24 փետրվարի, 2011 թ. Սխալների ուղղում։ IE9 աջակցում 1.5.2 փոքր., չսեղմ. 24 փետրվարի, 2011 թ. Սխալների ուղղում 1.6 փոքր., չսեղմ. 24 փետրվարի, 2011 թ. 4 սխալների ուղղում,
 data() մեթոդի արտադրողականության բարելավվում,
 Փոփոխություններ, որոնք «կոտրում» են համատեղելիությունը (փոփոխվել են `data()`, `attr()` և `prop()` մեթոդները) 1.6.1 փոքր., չսեղմ. 12 մայիսի, 2011 թ. Սխալների ուղղում 1.6.2 փոքր., չսեղմ. 30 հունիսի, 2011 թ. - 1.6.3 փոքր., չսեղմ. 31 օգոստոսի, 2011 թ. -  1.6.4 փոքր., չսեղմ. 12 սեպտեմբերի, 2011 թ. -  1.7 փոքր., չսեղմ. 3 նոյեմբերի, 2011 թ. -  1.7.1 փոքր., չսեղմ. 21 նոյեմբերի, 2011 թ. -  1.7.2 փոքր., չսեղմ. 21 մարտի, 2012 թ. -  1.8.0 փոքր., չսեղմ. 9 օգոստոսի, 2012 թ. -  1.8.1 փոքր., չսեղմ. 30 օգոստոսի, 2012 թ. -  1.8.2 փոքր., չսեղմ. 20 սեպտեմբերի, 2012 թ. -  1.8.3 փոքր., չսեղմ. 13 նոյեմբերի 2012 թ. Սխալների ուղղում 1.9.0 սկսվելու է 2013 թ.-ից Հնացած միջերեսների հեռացում և կոդի մաքրում 2.0.0 սկսվելու է 2013 թ.-ից Internet Explorer-ի 6-8 տարբերակներն այլևս չեն աջակցվելու՝ արտադրողականության բարձրացման և ֆայլերի չափսերի փոքրացման նպատակով

Հապավումներփոքր.  - փոքրացվածսեղմ.  - սեղմվածչսեղմ.  - չսեղմվածփաստ.  - Visual Studio-ի փաստաթուղթ

 Այլ ապրանքների հետ ինտերգրացումը 
2008 թ. սեպտեմբերի 28-ին jQuery-ի պաշտոնական բլոգում հայտնեցին այն մասին, որ Microsoft և Nokia ընկերությունները պատրաստվում են համագործակցել նշակողների խմբի հետ։ Microsoft ընկերությունը պատրաստվում է ինտեգրացնել jQuery-ի կոդի և օրինակների ելատեքստը ASP.NET-ի հետ, իսկ Nokia-ն պատրաստվում է ինտեգրացնել jQuery-ն իր բջջային վիդջեթներում։

 Մշակողների թիմը 
Գրադարանի վրա աշխատանքները բաժանված են 5 խմբերի։

ԽմբերՆկարագրությունՄասնակիցներ Մշակողներ Պատասխանատու են գրադարանի բովանդակության համար (գրադարանի մշակում, թեստավորում, փաստաթղթավորում և այլն)։ John Resing
 Brandon Aaron
 Ariel Flesler
 Jörn Zaefferer
 CyberMerlin PR Հասարակության հետ կապի պատասխանատուներ։ Rey Bango
 Karl Swedberg
 Cody Lindley jQuery UI jQuery UI-ի մշակումն ու աջակցումը Paul Bakaus
 Richard D. Worth
 Scott González
 Todd Parker
 Otros Plugins Հավելումների համար պատասխանատուներ Yehuda Katz
 Klaus Hartl
 Mike Alsup Web դիզայներներ jQuery-ի կայքի դիզայնի և աջակցման պատասխանատուներ Scott Jehl
 Mike Hostetler

 Տես նաև 
 Dojo
 Extjs
 jQuery UI
 jQuery Mobile
 MooTools
 Prototype

 Ծանոթագրություններ 

 Արտաքին հղումներ 
 JQuery դասընթաց
 Պաշտոնական կայքը 
 jQuery-ի առցանց այլընտրանքային ուղեցույց  

Կատեգորիա:JavaScript գրադարաններ
Կատեգորիա:Թվային գրադարաններ