jQuery

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기

jQuery
JQuery-Logo.svg
원저자존 레식
개발자The jQuery Team
발표일2006년 8월 26일 (14년 전)(2006-08-26)
안정화 버전
3.5.1 / 2020년 5월 4일 (6개월 전)(2020-05-04)
저장소 위키데이터에서 편집하기
프로그래밍 언어자바스크립트
크기27 ~ 274 KB
종류자바스크립트 라이브러리
라이선스MIT 허가서
웹사이트http://jquery.com/

jQuery(제이쿼리)는 HTML클라이언트 사이드 조작을 단순화 하도록 설계된 크로스 플랫폼자바스크립트 라이브러리다. 존 레식2006년 뉴욕 시 바캠프(Barcamp NYC)에서 공식적으로 소개하였다.

jQuery는 MIT 라이선스를 가진 자유 오픈 소프트웨어이다.[1] jQuery의 문법은 코드 보기, 문서 객체 모델 찾기, 애니메이션 만들기, 이벤트 제어, Ajax 개발을 쉽게 할 수 있도록 디자인되었다. 또한, jQuery는 개발자가 플러그인을 개발할 수 있는 기능을 제공한다.

마이크로소프트노키아는 자사 플랫폼에 jQuery를 포함하는 계획을 발표한 바 있다.[2] 마이크로소프트비주얼스튜디오[3]의 ASP.NET AJAX 프레임워크와 ASP.NET MVC 프레임워크에 적용했고, 노키아는 자사의 런타임 위젯 개발 플랫폼에 통합하였다.[4]

기능[편집]

  • DOM 요소 선택 기의 파생 프로젝트이다.[5]
  • DOM 탐색 및 수정 (CSS 1-3 지원)
  • CSS 셀렉터에 기반한 DOM 조작. 노드 요소 및 노드 속성(아이디 및 클래스)을 셀렉터 생성을 위한 기준으로 사용.
  • 이벤트
  • 특수효과 및 애니메이션
  • AJAX
  • JSON 파싱
  • 플러그인을 통한 확장성
  • 유틸리티
  • 호환성 메소드 (inArray(), each() 함수 등)
  • 멀티브라우저 지원 (크로스브라우저와는 다름)

브라우저 지원[편집]

jQuery 1.x와 2.x는 모두 최신 안정화 버전 및 그 이후 버전의 파이어폭스, 구글 크롬, 사파리, 그리고 오페라를 지원한다. 1.x 버전은 인터넷 익스플로러 6 및 그 이후 버전을 지원한다. 그러나 2.x 버전에서는 인터넷 익스플로러 6-8 버전이 지원되지 않으며 인터넷 익스플로러 9 또는 그 이후 버전을 지원한다.[6]

사용법[편집]

jQuery는 한 개의 JavaScript 파일로 존재한다. 공통의 DOM, 이벤트, 특수 효과, Ajax 함수를 포함한다. 다음 코드를 쓰면, 웹 페이지로 포함시킬 수 있다:

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

jQuery는 두 가지의 상호 작용 스타일을 갖고 있다:

  • $ 함수 이용. jQuery 오브젝트의 팩토리 메소드이다. 각각의 함수들은 jQuery 오브젝트를 반환하고 서로 연계할 수 있다.
  • $. -가 앞에 붙은 함수 이용. 이들 함수는 jQuery 오브젝트 그 자체와 연동되지는 않는다.

일반적으로 여러 개의 DOM 노드들을 조작하는 작업은 $ 함수로 시작된다. CSS 셀렉터 스트링을 가지고 호출된다. 결과적으로 0개 혹은 그 이상의 HTML 페이지 내의 엘리먼트를 레퍼런스하는 jQuery 오브젝트가 반환된다. 이 노드 집합들은 jQuery 오브젝트에 대해 인스턴스 메소드들을 적용함으로써 조작될 수 있다. 혹은 노드들 그 자체가 조작될 수 있다. 예를 들면 다음과 같다:

$("div.test").add("p.quote").addClass("blue").slideDown("slow");

…클래스에 test를 포함하는 모든 div 엘리먼트를 찾는다. 클래스에 quote를 포함하는 p 엘리먼트를 찾는다. 찾아낸 각각의 엘리먼트에 대해 blue 클래스를 추가한다. 그 뒤 아래쪽으로 슬라이드되는 애니메이션 효과를 준다. $add 함수는 찾아낸(matched) 집합(set)에 영향을 준다. addClassslideDown 함수는 레퍼런스된 노드들에 영향을 준다.

$.가 앞에 붙은 함수들은, 글로벌 프로퍼티나 행동에 영향을 주는, 유틸리티 메소드들이다. 예를 들면 다음과 같다:

$.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 );
  }
});

… 파라미터 name=John&location=Boston을 주면서 some.php에 요청을 보낸다.요청이 성공적으로 수행되었으면, 그 응답이 alert()된다.

배포 내역[편집]

버전 최초 릴리스 마지막 업데이트 최소 크기 (KB) 비고
1.0 2006년 8월 26일 (2006-08-26) 최초 안정판
1.1 2007년 1월 14일 (2007-01-14)
1.2 2007년 9월 10일 (2007-09-10) 1.2.6 54.5
1.3 2009년 1월 14일 (2009-01-14) 1.3.2 55.9 코어에 시즐 셀렉터 엔진(Sizzle Selector Engine) 도입
1.4 2010년 1월 14일 (2010-01-14) 1.4.4 76.7
1.5 2011년 1월 31일 (2011-01-31) 1.5.2 83.9 디퍼드(Deferred) 콜백 관리, ajax 모듈 재작성
1.6 2011년 5월 3일 (2011-05-03) 1.6.4 89.5 attr(), val() 함수의 상당한 성능 개선
1.7 2011년 11월 3일 (2011-11-03) 1.7.2 (2012년 3월 21일 (2012-03-21)) 92.6 새 이벤트 API: .on(), .off() - 구 API는 여전히 지원.
1.8 2012년 8월 9일 (2012-08-09) 1.8.3 (2012년 11월 13일 (2012-11-13)) 91.4 시즐 셀렉터 엔진 재작성. 애니메이션 및 $(html, props) 유연성 개선.
1.9 2013년 1월 15일 (2013-01-15) 1.9.1 (2013년 2월 4일 (2013-02-04)) 90.5 구식 인터페이스 제거 및 코드 정리
1.10 2013년 5월 24일 (2013-05-24) 1.10.2 (2013년 7월 3일 (2013-07-03)) 90.9 1.9와 2.0 베타 사이클에서 보고된 버그 수정 및 차이점 통합
1.11 2014년 1월 24일 (2014-01-24) 1.11.3 (2015년 4월 28일 (2015-04-28)) 93.7
1.12 2016년 1월 8일 (2016-01-08) 1.12.4 (2016년 5월 20일 (2016-05-20)) 94.9
2.0 2013년 4월 18일 (2013-04-18) 2.0.3 (2013년 7월 3일 (2013-07-03)) 81.7 성능 개선 및 파일 크기 축소를 위해 IE 6-8 지원 중단
2.1 2014년 1월 24일 (2014-01-24) 2.1.4 (2015년 4월 28일 (2015-04-28)) 82.4
2.2 2016년 1월 8일 (2016-01-08) 2.2.4 (2016년 5월 20일 (2016-05-20)) 83.6
3.0 2016년 6월 9일 (2016-06-09)[7] 3.0.0 (2016년 6월 9일 (2016-06-09)) 84.3 디퍼드(Deferred)의 Promises/A+ 지원, $.ajax 및 $.when, .data() HTML5 호환
3.1 2016년 7월 7일 (2016-07-07) 3.1.1 (2016년 9월 23일 (2016-09-23)) 84.7 jQuery.readyException 추가, 레디 핸들러 오류 표시(ready handler errors are now not silenced)
3.2 2017년 3월 16일 (2017-03-16)[8] 3.2.1 (2017년 3월 20일 (2017-03-20)) 84.6 <template> 요소 내용 검색 지원 추가. 다양한 구 메소드 구식화.
3.3 2018년 1월 19일 (2018-01-19)[9] 3.3.1 (2018년 1월 20일 (2018-01-20))[10] 84.9 오래된 함수 구식화, 클래스를 수용하는 함수는 이제 배열 형태로 지원.
3.4 2019년 4월 10일 (2019-04-10)[11] 3.4.1 (2019년 5월 1일)[12] 86.1 성능 개선, noncenomodule 지원, 라디오 요소 수정, 사소한 보안 문제 수정.
3.5 2020년 4월 10일 (2020-04-10)[13] 3.5.1 (2020년 5월 4일)[14] 87.4 보안 문제 수정, .even() & .odd() 메소드, jQuery.trim 구식화

각주[편집]

  1. “jQuery Project License”. jQuery Foundation. 2017년 3월 11일에 확인함. 
  2. Resig, John (2008년 9월 28일). “jQuery, Microsoft, and Nokia”. 《jQuery Blog》. jQuery. 2009년 1월 29일에 확인함. 
  3. Guthrie, Scott (2008년 9월 28일). “jQuery and Microsoft”. 《ScottGu's Blog》. 2019년 4월 15일에 확인함. 
  4. “Guarana UI: A jQuery Based UI Library for Nokia WRT”. 《Forum Nokia》. 2011년 8월 16일에 원본 문서에서 보존된 문서. 2010년 3월 30일에 확인함. 
  5. Resig, John (2009년 1월 14일). “jQuery 1.3 and the jQuery Foundation”. 《jQuery Blog》. 2014년 3월 26일에 확인함. 
  6. Browser Support | jQuery
  7. Chesters, James (2016년 6월 15일). “Long-awaited jQuery 3.0 Brings Slim Build”. infoq.com. 2017년 1월 28일에 확인함. 
  8. “jQuery 3.2.0 Is Out!”. 《jQuery Blog》. 2017년 3월 16일. 2018년 3월 12일에 확인함. 
  9. “jQuery 3.3.0 – A fragrant bouquet of deprecations and…is that a new feature?”. 《jQuery Blog》. 2018년 1월 19일. 2019년 4월 15일에 확인함. 
  10. “jQuery 3.3.1 – fixed dependencies in release tag”. 《jQuery Blog》. 2018년 1월 20일. 2019년 4월 15일에 확인함. 
  11. “jQuery 3.4.0 Released”. 《jQuery Blog》. 2018년 4월 10일. 2019년 4월 15일에 확인함. 
  12. “jQuery 3.4.1: triggering focus events in IE and finding root elements in iOS 10”. 《jQuery Blog》. jQuery Foundation. 
  13. “jQuery 3.5.0 Released!”. 《jQuery Blog》. 2020년 4월 10일. 2020년 4월 11일에 확인함. 
  14. “jQuery 3.5.1 Released: Fixing a Regression”. 《jQuery Blog》. jQuery Foundation. 

참고 문헌[편집]

  • Learning jQuery, ISBN 1-84719-250-5
  • jQuery in Action, ISBN 1-933988-35-5
  • Beginning JavaScript with DOM Scripting and Ajax, ISBN 1-59059-680-3
  • Hacking del.icio.us, ISBN 0-470-03785-7
  • Pro JavaScript Techniques, ISBN 1-59059-727-3
  • AJAX and PHP: Building Responsive Web Applications, ISBN 1-904811-82-5
  • Web Development Solutions, ISBN 1-59059-806-7

외부 링크[편집]