본문 바로가기
프로그래밍 놀이터/Web

[Script] jQuery Tutorial ( 기초 강좌 )

by 돼지왕 왕돼지 2012. 9. 26.
반응형


jQuery Introduction

What is jQuery?

- jQuery는 적게 쓰고 많은 일을 하기 위한 JavaScript Library.

- AJAX call 이나 DOM 등을 아주 간단하게 조작할 수 있게 해준다.

- jQuery의 특징은 다음과 같다.

 1. HTML/DOM 조작

 2. CSS 조작

 3. HTML event methods

 4. Effects and animations

 5. AJAX

 6. Utilities




Why jQuery?

- 많은 JS framework 들이 있지만, jQuery가 가장 유명하다.

- Google, MS, IBM, Netflix 가 jQuery를 사용한다.

- 모든 browser 호환여부는 jQuery lib 에 쓰여 있다. 대부분의 major browser에서 다 돌아간다.




jQuery Install

Adding jQuery to Your Web Pages

- jQuery 사용을 위해서는 jQuery lib 이 필요하다. 그리고 page에 <script src="jquery.js"> 가 추가되어야 한다.

- 참고로 <script> 태그는 <head> 안에 들어있는 것이 좋다.

- 또 다시 참고로 type="text/javascript" 를 기록하지 않는 이유는 JS가 HTML5부터는 기본 표준 script language이기 때문이다.




Basic jQuery Example

<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("p").hide();
  });
});
</script>
</head>

<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>Click me</button>
</body>
</html>





Downloading jQuery

- 2가지 버전의 jQuery가 있다.

 1. Production version : live website 용으로 최소화되고, 압축되었다.

 2. Development version : 압축되지 않고, readable한 코드들이 있다.

 둘 다 jQuery.com에서 다운로드 가능하다.




Alternative to Downloading

- 다운로드 하지 않고도 연결하는 방법이 있는데, CDN( Content Delivery Network ) 를 이용하면 된다. ( src에 url 넣어주기 )

- 구글의 CDN 주소는 http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js 데, 가운데 /1.8.0/ 버전부분을 빼주면 항상 최신버전으로 링크된다. 

-  MS의 CDN 주소는 http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js

- Google 이나 MS의 CDN을 쓰는 데서 오는 장점은, cache가 되어 loading time 이 빠르다는 점과 한번 접속하면 가장 가까운 서버에서 support하도록 설계되어 있다.






jQuery Syntax

jQuery Syntax

- jQuery Syntax 는 HTML element를 선택하고 어떤 action을 가하는데 최적화되어 있다.

- syntax

$(selector).action() 


- $ sign은 jQuery를 define/acceess 하기 위한 기호

- (selector) 는 HTML element의 query or find 의 역할

- action() 은 HTML element에 행해지는 action

$(this).hide()

$("p").hide() // 모든 <p> element hide

$(".test").hide() // class="test"인 모든 element가 hide

$("#test").hide() // id="test"인 element가 hide



The Document Ready Event

$(document).ready(function(){

   // jQuery methods go here...

});

document의 load가 끝나기 전에 script가 실행되는 것을 예방해준다. 

$(function(){

   // jQuery methods go here...

});

- $(document).ready( function() ) 구분은 너무 자주 쓰이기 때문에 $(function()) 으로만 써도 되도록 지원된다.






jQuery Selectors

jQuery Selectors

- HTML element를 선택하고 조작하는것을 도와준다.

- id, classes, types, attributes, attribute value 등을 기준으로 element를 선택할 수 있다. 이 선택은 사실 CSS Selectors를 기반으로 하고 있고, 약간의 custom selector 들이 추가되었다. 모든 jQuery의 selector는 $(조건자) 의 형태로 이루어진다.



The element Selector

- tag name으로 선택한다. 예를 들어 모든 p tag를 선택하고 싶다면

$("p")




The #id Selector

- id로 검색한다.

$("#test")




The .class Selector

- class 이름으로 검색한다.

$(".test")




More Examples of jQuery Selectors

- ${"*"} : 모든 element

- $(this) : 현재 HTML element

- $("p.intro") : class="intro" 인 모든 p element

- $("p:first") : 첫번째 p element

- $("ul li:first") : 첫번째 ul 의 첫번째 li element

- $("ul li:first-child") : 모든 ul의 첫번째 li element

- $("[href]") : href attribute 를 가진 모든 element

- $("a[target='_blank']") : target='_blank' 인 모든 a element

- $("a[target!='_blank']") : target이 '_blank'가 아닌 모든 a element.

- $(":button") : 모든 type="button"인 input element와 button element

- $("tr:even") : 모든 짝수 tr element.

- $("tr:odd") : 모든 홀수 tr element.



Selectors Reference



jQuery Events

jQuery Event Functions

- jQuery 의 event handling methods는 jQuery 의 핵심이다.

<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("p").hide();
  });
});
</script>
</head>

<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>Click me</button>
</body>

</html>






Functions In a Separate File

- 만약 웹사이트가 많은 페이지를 가지고 있다면 jQuery function들은 다른 .js 파일에 넣는 것이 더 좋다.

- <script src="my_jquery_functions.js"> 만 넣어주면 된다.




jQuery Name Conflicts

- jQuery는 $ 를 사용하는데, 가끔 JS lib 들도 function 에 $ 을 사용하여 conflict가 나는 경우가 있다. noConflict()는 selector를 사용할 때 $ 대신 다른 용어를 사용할 수 있게 해준다. ( 하지만 jQuery 가 널리 쓰이기 때문에 이런 일은 적지 않을까 싶다... )

var jq = jQuery.noConflict();

jq(document).





jQuery Events

- $(document).ready(function)

- $(selector).click(function)

- $(selector).dblclick(function)

- $(selector).focus(function)

- $(selector).mouseover(function)




jQuery Event Reference





jQuery Effects - Hide and Show

jQuery hide() and show()

- Syntax:

$(selector).hide( speed, callback );


$(selector).show( speed, callback );

speed = "slow" or "fast" or milliseconds.

callback = hide or show 가 끝난 후에 수행




jQuery toggle()

- hide() 와 show()를 toggle 한다.

- Syntax:

$(selector).toggle( speed, callback );




jQuery Effects Reference






jQuery Effects - Fading

jQuery Fading Methods

- fadeIn()

- fadeOut()

- fadeToggle()

- fadeTo()



jQuery fadeIn(), fadeOut(), fadeToggle(), fadeTo() Method

- Syntax:

$(selector).fadeIn( speed, callback );
$(selector).fadeOut(speed,callback);
$(selector).fadeToggle(speed,callback);
$(selector).fadeTo(speed,opacity,callback);





jQuery Effects - Sliding

jQuery Sliding Methods

- slideDown()

- slideUp()

- slideToggle()




jQuery slideDown(), slideUp(), slideToggle() Method

- Syntax : 

$(selector).slideDown( speed, callback );
$(selector).slideUp(speed,callback);
$(selector).slideToggle(speed,callback);



jQuery Effects - Animation

jQuery Animations - The animate() Method

- custom animation 을 적용할 수 있다.

- Syntax

 $(selector).animate( {params}, speed, callback };

param= animation 될 CSS properties.

- 기본적으로는 모든 HTML element 는 static position 이 있고, 이동될 수 없다. position 을 조작하려면, CSS position property 를 relative, fixed 또는 absolute 로 설정해야 한다.


$("button").click(function(){
  $("div").animate({left:'250px'});
}); 

<div style="background:#98bf21;height:100px;width:100px;position:absolute;"> 




jQuery animate() - Manipulate Multiple Properties

- comma separate 로 설정해주면 된다.

- 거의 대부분의 CSS property는 animate 가능하다. 

- CSS property 는 모두 camel-cased (propertyName 처럼 공백없이 문자로만 표시되며, 단어연결이 대문자시작으로 되는 형태)이어야만 한다.

- color animation 은 core jQuery lib 에는 포함되어 있지 않다. 사용하려면 Color Animations plugin 을 jQuery.com에서 다운받아 사용해야 한다.

$("button").click(function(){
  $("div").animate({
    left:'250px',
    opacity:'0.5',
    height:'150px',
    width:'150px'
  });
}); 




jQuery animate() - Using Relative Values

- Relative value 도 설정할 수 있다. += -= 등을 사용한다.

$("button").click(function(){
  $("div").animate({
    left:'250px',
    height:'+=150px',
    width:'+=150px'
  });
}); 




jQuery animate() - Using Pre-definede Values

- "show", "hide", "toggle" 의 pre-defined value 도 사용할 수 있다.

$("button").click(function(){
  $("div").animate({
    height:'toggle'
  });
}); 




jQuery animate() - Uses Queue Functionality

- jQuery 는 기본적으로 animation에 대해 queue 를 운영한다. animation을 여러개를 동시에 돌린다면, 등록되는 순서대로 internal queue 에 쌓아놓고 one by one 으로 돌린다.





jQuery Stopping Animations.

jQuery stop() Method

- Animation을 정지시킨다.

- Syntax:

 $(selector).stop( stopAll, goToEnd );

stopAll = queue clear 여부 ( default : false )
goToEnd = animation 종료시점으로 이동할지 ( default : false ) 


$("#stop").click(function(){
  $("#panel").stop();
});


 

jQuery Callback Functions

jQuery Callback Functions

- JS 는 line by line 으로 수행된다. 

- effect가 같이 있는 경우에는 effect가 수행되는 와중에 코드를 계속 실행시킨다. 이럴 경우 error 가 발생할 수 있다.

- effect가 같이 있는 경우의 에러를 방지하기 위해 callback function 이 있다.

- callback function 은 현재 effect가 끝나는 순간 수행된다.






jQuery HTML/DOM Manipulation

Changing HTML Content

- jQuery 의 html() 함수는 content( innerHTML ) 을 변화시킨다.




Adding HTML content

- jQuery의 append() 함수는 선택된 element의 content에 추가한다.

- prepend()

- after()는 뒤에 바로 따라 붙이는 것이 아닌 \n 효과를 주며 추가한다.

- before()




jQuery HTML Method Reference



jQuery CSS Manipulation

jQuery css() Method

- css() 는 jQuery의 CSS 조작을 위한 중요한 함수이다.

- css( property ) : return CSS property value

- css( property, value ) : set CSS property and value

- css( {properties} ) - set multiple CSS properties and values



Return CSS Property

css( property )


- 첫번째로 match 된 녀석의 값을 돌려준다. ( 예를 들어 p 태그를 사용하는 녀석이 여러개 있다면 그 중 해당 property 를 가진 첫번째 p 태그에 대한 갓을 return 한다. )




Set CSS Property and Value

css( property, value )


- All match element의 property에 대한 value 를 바꾼다.




Set Multiple CSS Properties

css( {properties} )


- All match에 대해 여러개의 property 와 value를 동시에 바꾼다.

$("p").css({"background":"yellow","font-size":"200%"});





jQuery height() and width() Methods

- width(), height() 는 첫번째 match 되는 녀석에 대한 값을 return 하고. width( value ) , height( value ) 는 모든 match 되는 녀석의 값을 설정한다.




jQuery CSS Methods Reference




jQuery AJAX

What is AJAX?

- AJAX = Asynchronous JavaScript and XML.

- AJAX는 빠르고 동적인 웹 페이지를 만드는 기술.

- AJAX는 웹 페이지를 서버로부터 적은 양의 데이터를 받아 비동기식으로 업데이트한다. 다시 말하면 전체 reload없이 웹 페이지의 일부만을 변경하는 것을 말한다.




AJAX and jQuery

- jQuery 는 AJAX에 대한 충분히 많은 함수를 제공한다.

- jQuery와 AJAX를 함께 사용하면, server에게 HTTP GET, POST를 이용하여 text, HTML, XML, JSON 등을 요청할 수 있다. 그리고 특정 HTML element에 그 내용을 바로 반영할 수 있다. ( 전체 갱신 없이 )




jQuery load() Method

- jQuery의 load() 함수는 강력한 AJAX 함수이다. server로부터 data를 읽어서 특정 element에 그 내용을 뿌리는 기능이다.

- Syntax:

 $(selector).load( URL, data, callback );




jQuery $.ajax() Method

- jQuery의 $.ajax() 함수는 AJAX request를 수행한다.

- Syntax:

$.ajax( options );


- $.ajax() 는 load(), get(), post() 보다 더 많은 기능을 제공하지만 사용하기는 조금 더 어렵다.

- options는 name:value pairs 를 받는데, URL, passwords, data types, filters, character sets, timeout, error function 들을 받는다.

$.ajax({url:"test1.txt",success:function(result){
  $("div").html(result);
}});




jQuery AJAX Methods Reference.




jQuery Examples.



도움이 되셨다면 손가락 꾸욱~ ( 로그인 필요 x ) 






반응형

댓글