[하코사세미나] 한 시간 만에 배우는 jquery

45
한 한한 한한 한한한 Jquery 한한한한한 한한한한 한한 한한한 ! 한한한한한한한한한 한한

Upload: -

Post on 10-Jan-2017

8.435 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: [하코사세미나] 한 시간 만에 배우는 Jquery

한 시간 만에 배우는 Jquery퍼블리셔의 시각으로 쉽게 배우자 !

하드코딩하는사람들 빼로

Page 2: [하코사세미나] 한 시간 만에 배우는 Jquery

Jquery 란 ?

Page 3: [하코사세미나] 한 시간 만에 배우는 Jquery
Page 4: [하코사세미나] 한 시간 만에 배우는 Jquery

많은 퍼블리셔가 힘들어해요…UI 개발이 너무 어려워서…

대충 요런 기분 ?

Page 5: [하코사세미나] 한 시간 만에 배우는 Jquery

UI 개발이 어려운 이유개발자가 아닌 사람에게 개발을 하라 한다…

책을 봐도 당최 모르겠어…

Page 6: [하코사세미나] 한 시간 만에 배우는 Jquery

하지만 희망은 있다 !

우리에겐 빼로 Jquery 가 있으니까

Page 7: [하코사세미나] 한 시간 만에 배우는 Jquery

발표의 대상CSS 는 익숙하지만 , Jquery 가 어려운 사람

퍼블리셔의 시각이 형성된 사람

2~3 년차 !

Page 8: [하코사세미나] 한 시간 만에 배우는 Jquery

퍼블리셔의 시각이란 ?

CSS 적 사고Selector Style

Page 9: [하코사세미나] 한 시간 만에 배우는 Jquery

CSS 적 사고의 핵심

선택한 대상을 변화시킨다Selector

Style

Page 10: [하코사세미나] 한 시간 만에 배우는 Jquery

UI 개발의 핵심과 Jquery

선택한 대상이특정 상황일 때 변화시킨다

Event

$(Selector)

.css()

.addClass()

.removeClass()

Page 11: [하코사세미나] 한 시간 만에 배우는 Jquery

무슨 일이 발생하는가 ?사용자 이벤트• Click• Mousedown• Mouseup• Keydown• Keyup• Keypress• Focus• ……

브라우저 이벤트• Load• Unload• Resize• Scroll• ……

Page 12: [하코사세미나] 한 시간 만에 배우는 Jquery

하지만…이런 사전적인 내용이중요한 것이 아니다 !

Page 13: [하코사세미나] 한 시간 만에 배우는 Jquery

결론Jquery 를 잘 하려면

CSS 적 사고에 익숙해야 한다 !

Page 14: [하코사세미나] 한 시간 만에 배우는 Jquery

감사합니다

Page 15: [하코사세미나] 한 시간 만에 배우는 Jquery

그럼 이제 시작해볼까요 !?

Page 16: [하코사세미나] 한 시간 만에 배우는 Jquery

목차기초 : CSS 적 사고하기1. Class 기반 사고하기2. Selector 기반 사고하기심화 : 기초에 기술 더하기3. DOM 조작하기4. 모듈화의 첫 걸음

Page 17: [하코사세미나] 한 시간 만에 배우는 Jquery

1. 기초 : Class 기반 사고하기

Page 18: [하코사세미나] 한 시간 만에 배우는 Jquery

Class 기반 사고란 ?

이벤트 처리를 할 때 대상에Class 를 추가하거나 없애는 것으로모든 효과를 처리할 수 있도록 CSS 를 설계하는 사고방법

Page 19: [하코사세미나] 한 시간 만에 배우는 Jquery

Class 기반 사고를 해야 하는 이유대부분의 UI 개발은 사용자의 의도에 따른 화면의 변화를 의미화면의 변화는 80% 이상 CSS 로 처리가 가능

대규모 화면일수록 작업의 효율과 모듈화를 위해수준 높은 CSS 설계가 필수

Page 20: [하코사세미나] 한 시간 만에 배우는 Jquery

Style 관련 Jquery 기능.CSS()

.addClass()

.removeClass()

Style=“” 형태로 적용됨.css(‘background’, ‘#fff’);.css({ background : ‘#fff’, marginTop: ’10px’});

Class=“” 형태로 적용됨

두 가지 방법으로 적용 가능 !

Page 21: [하코사세미나] 한 시간 만에 배우는 Jquery

이벤트에 따른 Class 추가$(‘#button’).click(function() { $(this).addClass(‘active’);});

기본$(‘#button’).click(function() { if($(this).hasClass(‘active’)) { $(this).removeClass(‘active’); } else { $(this).addClass(‘active’); }});

토글

예제보기2예제보기1

Page 22: [하코사세미나] 한 시간 만에 배우는 Jquery

다른 대상에 영향주기$('#button').click(function() { if($('body').hasClass('dark')) { $('body').removeClass('dark'); } else { $('body').addClass('dark'); }});

토글

실제사례예제보기

Page 23: [하코사세미나] 한 시간 만에 배우는 Jquery

2. 기초 : 셀렉터 기반 사고하기

Page 24: [하코사세미나] 한 시간 만에 배우는 Jquery

Selector 기반 사고란 ?

이벤트에 따른 Class& 상태 변화가 있을 때그에 대한 조건을 일일이 확인하지 않고Selector 에서 선처리 할 수 있도록 설계하는 사고방법

Page 25: [하코사세미나] 한 시간 만에 배우는 Jquery

Class 를 이용한 UI 예제$('#list>li').click(function() { if($(this).hasClass('select')) { $(this).removeClass('select'); } else { $(this).addClass('select'); }});

li 태그 선택

예제보기

$('#delete').click(function() { $('#list>li.select').remove();});

li 태그 선택

Page 26: [하코사세미나] 한 시간 만에 배우는 Jquery

Form 요소를 이용한 UI 예제$('#delete').click(function() {

$('#list input:checked').closest('li').remove();});

li 태그 선택

예제보기

parent() 는 리뉴얼 하면서 DOM 이 끊길 수 있고parents() 는 복수로 적용될 수 있기 때문에반드시 closest() 를 사용

Page 27: [하코사세미나] 한 시간 만에 배우는 Jquery

1. 심화 : DOM 조작하기

Page 28: [하코사세미나] 한 시간 만에 배우는 Jquery

DOM 생성 파워레인져 !

.before().prepend()

.after().append()

.html()

Page 29: [하코사세미나] 한 시간 만에 배우는 Jquery

한 방에 이해하는 DOM 생성…</div><ul id=“list”> <li> 빼로 </li> <li> 재선 </li> <li> 낙구 </li> <li> 수호 </li></ul><div> …

$('#list').before();

$('#list').after();

$('#list').prepend();

$('#list').append();

선택자의 바깥$('#list').html();

선택자의 내부

Page 30: [하코사세미나] 한 시간 만에 배우는 Jquery

DOM 생성 예제$('#add').click(function() { var content = $('#field').val(); if(!content) { alert(' 내용을 입력하세요 .'); return false; } $('#list').append('<li>'+content+'</li>');});

input 태그를 이용한 필드추가

예제보기

Page 31: [하코사세미나] 한 시간 만에 배우는 Jquery

하지만…새로 생성한 태그는 이벤트가 없다…

어째서…

Page 32: [하코사세미나] 한 시간 만에 배우는 Jquery

bind 의 한계이벤트를 바인딩 하는 시점에 없는 태그는 적용되지 않는다 .

참고로 위의 내용은 파이어폭스 개발자도구

Page 33: [하코사세미나] 한 시간 만에 배우는 Jquery

live 를 사용하면 된다 !

$('#list>li').click(function() { …… });

bind

$(document).on('click', '#list>li', function() { …… });

live

한 번만 선언하면 계속 적용된다 . 실수로 여러 번 선언했을 경우 여러 번 동작한다 .초기 로딩될 때 한 번만 사용하자 .

예제보기

Page 34: [하코사세미나] 한 시간 만에 배우는 Jquery

2. 심화 : 모듈화의 첫 걸음

Page 35: [하코사세미나] 한 시간 만에 배우는 Jquery

개발의 진화과정어떻게든 만든다 한 페이지에서 한 번만 작동

어찌어찌 해서두 번 작동하게 만든다다른 페이지에서 쓰려니소스를 통으로 복사한다

공통으로 사용할 수 있게모듈화를 했다조금 더 다듬어서라이브러리나 플러그인으로배포 !!!

Page 36: [하코사세미나] 한 시간 만에 배우는 Jquery

모듈화의 첫 걸음1. ID 이외의 Selector 기반으로 작성2. Selector 가 일정 범위를 벗어나지 않음3. 자주 쓸 경우 자동 바인딩 , 가끔 사용할 경우

실행형으로 작성

Page 37: [하코사세미나] 한 시간 만에 배우는 Jquery

ID 이외의 Selector 기반으로 작성<div class="dropdown-set"> <button type="button" data-toggle="dropdown"> 세미나 신청 </button> <ul class="dropdown-menu"> <li><a href="#"> 빼로 </a></li> <li><a href="#"> 재선 </a></li> <li><a href="#"> 낙구 </a></li> <li><a href="#"> 수호 </a></li> </ul></div>

Page 38: [하코사세미나] 한 시간 만에 배우는 Jquery

Selector 가 일정 범위를 벗어나지 않음

$('button[data-toggle="dropdown"]').click(function() { if($(this).hasClass('active')) { $(this).closest('.dropdown-set').find('.dropdown-menu').removeClass('active'); } else { $(this).closest('.dropdown-set').find('.dropdown-menu').addClass('active'); }});

이벤트가 일어났을 때 이벤트 주체 (this) 에서 .closest() 로 selector 의 범위를 한정하고 DOM 을 탐색

Page 39: [하코사세미나] 한 시간 만에 배우는 Jquery

가끔 사용할 경우 실행형으로 작성function initDropdown() { $('button[data-toggle="dropdown"]').click(function() { if($(this).hasClass('active')) { $(this).closest('.dropdown-set').find('.dropdown-menu').removeClass('active'); } else { $(this).closest('.dropdown-set').find('.dropdown-menu').addClass('active'); } });}

아래 함수를 공통모듈 js 파일에 넣고 필요할 때 호출

예제보기

Page 40: [하코사세미나] 한 시간 만에 배우는 Jquery

이제 옵션도 설정하고 다시 잘 다듬어서제이쿼리 플러그인으로 배포해야지!

Page 41: [하코사세미나] 한 시간 만에 배우는 Jquery

하지만 그 내용을 담으면이번 발표를 듣는 우리는…

대충 요런 기분 ?

Page 42: [하코사세미나] 한 시간 만에 배우는 Jquery

이 발표가 끝났을 때딱 하나만 기억에 남았으면좋겠어요…

Page 43: [하코사세미나] 한 시간 만에 배우는 Jquery

결국 UI 개발은이벤트가 발생했을 때

CSS 나 HTML 을 조작하는 것이전부라는 것을…

Page 44: [하코사세미나] 한 시간 만에 배우는 Jquery

그리고 그 작업의 도우미가바로 Jquery 입니다 .

Page 45: [하코사세미나] 한 시간 만에 배우는 Jquery

감사합니다정말로 끝 !