레이블이 jquery인 게시물을 표시합니다. 모든 게시물 표시
레이블이 jquery인 게시물을 표시합니다. 모든 게시물 표시

2018년 2월 17일 토요일

[JQuery] ToggleClass() 메소드 parent()・parents()・closest()の違い

parent()・parents()・closest()の違い
HTML
jQuery
 この記事は最終更新日から1年以上が経過しています。
ある要素の上の階層にある要素を取得するメソッドの違いを説明します。

メソッドの概要
parent([selector]) : 1個上の階層の要素を取得
closest(selector) : セレクタに合致する、直近の階層の要素を取得
parents([selector]) : 上の階層の全ての要素を取得
実行してみる
ChromeDeveloperToolsなどにコピペして実際に指定してみてくださいね

<html>
<head>
  <script type="text/javascript" src="http://code.jquery.com/jquery-3.1.0.min.js"></script>
</head>
<body>
  <div id="parent-a">
    <h1>見出し</h1>
    <div id="parent-b">
      <div id="parent-c">
        <div id="child"></div>
      </div>
    </div>
  </div>
</body>
</html>

$('#child').parent();
  -> [<div id="parent-c">..</div>]

$('#child').closest('#parent-c');
  -> [<div id="parent-c">..</div>]

$('#child').parents();
  -> [<div id="parent-c">..</div>, <div id="parent-b">..</div>, <div id="parent-a">..</div>, <body>..</body>, ..]
parent()とclosest()の違い
parent() : 1個上の階層の要素しか取得できない
上の例だと、$('#child')からは、parent-cしか取れない
closest() : 1個上とは限らず、条件に合致する最も近い階層の要素を取得できる
上の例だと、$('#child').closest('parent-b')などで、親の親要素であるparent-bを取ることもできる

2017년 12월 2일 토요일

제이쿼리

// ********** 제이쿼리 다운로드

http://jquery.com에 접속한 후 메인 페이지에서
[Download jQuery] 버튼을 클릭하여 최신 버전의 파일을 다운로드합니다.
이렇게 다운로드한 라이브러리는 네트워크를 사용할 수 없는 상황에서도 jQuery를 테스트할 수 있습니다.

"사용자가 다운받은 파일의 경로"
"네크워크 상의 jQuery 라이브러리의 경로"
jQuery에서 제공하는 CDN : http://code.jquery.com/jquery-1.8.3.min.js
jQuery에서 제공하는 최신 jQuery CDN : http://code.jquery.com/jquery.min.js
MS에서 제공하는 CDN : http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js
Google에서 제공하는 CDN : https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js

사용방법 : 기존 jQuery 로드 부분을 제거하고 <script type="text/javascript" src="위 3개 중 하나"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>

참고로 CDN이란 "contents delivery network"로서 제공하는 콘텐츠를
이 서버에 미리 옮겨놓고 필요할 경우 그 콘텐츠를
사용자에게 전달해 주는 것을 의미합니다.


// ********** 제이쿼리 사이트

http://jquery.com/ : 자바스크립트 라이브러리, 출간도서 소개 및 프로그램, 플러그인 다운로드 등 안내
http://www.jquerykorea.pe.kr/ : jQuery, Core, CSS, Events, 조작함수 등 정보 수록
http://www.jquery.kr/ : jQuery 강좌
http://apycom.com/ : jQuery 드롭다운 메뉴를 만들어주는 사이트
http://tympanus.net/codrops/category/tutorials/ : 현 시점에서 가장 많이 참고하고 있는 사이트로 템플릿을 제공


// ********** 구문 문법 정리

1) 명칭 정의
   태그(tag) : HTML 구성
   요소(element) : HTML 구성 태그와 id와 클래스
   노드(node) : HTML 구성 구조로서 태그, 요소와 같은 의미
   DOM : Document Object Model로서 HTML 요소 간의 긴밀한 노드 트리를 의미

2) $()의 의미
   jQuery() = $()

3) $(function(){ code })의 의미
   jQuery(document).ready(function(){ code });
   jQuery(function(){ code });
   $(function(){ code });

4) 기본 선택자
   태그 선택자 / 클래스 선택자 / id 선택자 / 그룹 선택자 / 전체 선택자

5) 계층 선택자
   descendant 선택자 / child 선택자 / sibling 선택자 / siblings 선택자

6) 속성 선택자
   attribute 선택자

7) 기본 필터 선택자
   eq 선택자 / gt 선택자 / lt 선택자 / first last 선택자 / even odd 선택자 / not 선택자

8) 내용 필터 선택자
   contains 선택자 / has 선택자 / empty 선택자

9) 보임 필터 선택자
   hidden 선택자 / visible 선택자

10) 자식 요소 필터 선택자
     first-child 선택자 / last-child 선택자 / nth-child 선택자

11) 탐색
     children() / find() / prev() / next() / siblings() / parent()

12) 필터링
     first() / last() / eq() / filter() / not() / has()

13) DOM 변경
     append() / prepand() / html() / text() / remove() / empty()

[jQuery]  jQuery를 시작하자

(1) jQuery 란?

jQuery(제이쿼리)는 브라우저 호환성이 있는
HTML 속 자바스크립트 라이브러리이며 클라이언트 사이드 스크립트 언어를
단순화 할 수 있도록 설계되었다. 존 레식이 2006년 뉴욕 시 바캠프(Barcamp NYC)에서 공식적으로 소개하였다.
jQuery는 오늘날 가장 인기있는 자바스크립트 라이브러리 중 하나이다.

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

출처 : wiki 백과

(2) jQuery 장점

- 크로스브라우징의 대안
- 코드의 간결화
- CSS 문법 지원
- 강력하고 활용도 높은 selector
- 유용한 플러그인 jQuery-ui, jQuery-mobile
- json Object를 이용한 페이지의 가벼움

(3) jQuery 시작

<script src="scripts/jquery-1.6.2.min.js"></script>

  JQuery 명령어를 사용할 수 있는 라이브러리를 추가해준다.
  참고 : jQuery API , jQueryKorea

(4) Body Onload

<script>
$(document).ready(function(){
     // JQuery 적용
});
</script>

$(document).ready(function(){}); 는 해당 페이지의 인코딩이 완료되었을 때, 실행된다.

(5) 클릭 리스너 등록

$('#move_up').click(function(){
     // 실행 함수
});

id 가 'move_up' 인 html 태그를 클릭시 작동하는 함수를 작성한다.
같은 리스너가 중복으로 등록되면, 클릭시 등록된 수만큼 함수가 실행되므로 주의.

(6) jQuery 기본 문법
 jQuery(), $()  : 괄호안의 대상을 JQuery로 묶어준다.
 선택자 : HTML 요소, CSS요소, ID요소로 JQuery를 적용할 요소를 선택할 수 있다.

  (1) HTML 요소 선택 : 같은 HTML요소에 대해 공통적인 사항을 적용할 때 선택
       $('img') : <img> 태그 전체 선택
       $('table') : <table> 태그 전체 선택

  (2) CSS 요소 선택 : 같은 CSS 요소에 대해 공통적인 사항을 적용할 때 선택
       $('.my_class') : class="my_class: 인 HTML 요소 선택
         ex> <input type="button" class="my_class" value="선택" />

  (3) ID요소 선택 : 선택한 ID 요소를 선택할 경우 사용. (ID는 고유의 값으로 하나만 선택)
      $('#userId') : id가 userId인 요소 선택.(고유값)
                  ex> <input type="button" id="userId" value="선택" />

  (4) 연쇄 요소 선택 : 선택자를 연속적으로 사용하여, 원하는 요소를 선택할 수 있다.
         $('table .my_class') : <table> 요소 아래에 있는 요소중 class=my_class 요소를 선택한다.
         $('div [name="myName"]') : <div> 요소중 name="myName"인 요소를 선택한다.

jQuery의 장점은 유연함에 있다. 위의 선택자를 잘 활용하면,
원하는 요소를 쉽게 선택할 수 있다. 소스가 복잡해질 수록
각 요소들의 CSS, ID, name 값을 잘 사용해야 한다.

여러명이 함께 하는 프로젝트라면 더욱더 약속된 명명 규칙을 잘 활용하자.
특히 ID 는 고유값으로만 사용할 수 있다는 것에 주의해야 한다.

[jQuery] jQuery API (1/7) - 제어 (선택, 삽입, 삭제, 변경, 변환, 확장)
1. 제어
- 선택
.add() : 요소를 추가 선택한다.
   /   $("p").add("div")  // p 요소와 div 요소를 선택한다.

.not() : 선택된 확장집합에서 인자에 해당하는 요소를 제거한다.
   /   $("p").not(".green")  // p 요소의 확장집합에서 class가 green인 요소를 제거한다.

.children() : 요소의 고유한 자식으로 구성된 확장 집합을 반환한다.

.contents() : 선택한 요소의 자식 요소를 가져온다.(text node 포함)
    $('.container').contents().filter(function(){});
      // class container 요소의 자식요소(text 포함)를 가져와 filter 한다. iframe text를 가져올때 사용

.first() : 요소의 첫번째 노드 반환

.last() : 요소의 마지막 노드 반환

.next() : 요소 집합내의 바로 다음에 나오는 형제로 구성된 요소 반환

.nextAll() : 요소 집합내의 다음에 나오는 모든 형제로 구성된 확장집합 반환

.nextUntil() : 선택 요소부터 인자가 나올때까지 집합을 선택한다.
   / $("#term").nextUntil("dt").css('background-color', 'red');
   // id term 요소부터 dt가 나올때까지 형제요소를 검색하고 배경을 red로 변경
  / $("#term").nextUntil($("#term2"), "dd").css('background-color', 'red');
  // id term 요소부터 id term2 요소까지 중 dd 요소만 배경을 red로 변경

.parent() : 요소 집합의 바로 위 부모로 구성된 확장 집합 반환

.parents() : 요소 집합의 모든 조상 확장 집합을 반환. 부모와 상위 모든 조상이 포함되지만 문서루트는 미포함

.parentsUnitl() : 선택 요소부터 인자가 나올때까지 부모 집합을 선택한다.
    / $("#term").parentsUntil("dt").css('background-color', 'red');
    // id term 요소부터 dt가 나올때까지 부모요소를 검색하고 배경을 red로 변경
    / $("#term").parentsUntil($("#term2"), "dd").css('background-color', 'red');
   // id term 요소부터 id term2 부모요소까지 중 dd 요소만 배경을 red로 변경

.prev() : 요소 집합의 바로 이전에 나오는 형제로 구성된 확장 집합을 반환

.prevAll() : 요소 집합의 이전에 나오는 모든 형제로 구성된 확장 집합을 반환

.siblings() : 요소의 모든 형제를 포함하는 확장 집합을 반환.

.eq() : 선택 요소의 index번째 요소를 선택한다.

   / $("div").eq(2).css('background-color', 'red'); // div의 3번째 요소의 배경을 변경

.index() : 선택 요소에서 인자의 index 번호를 반환

   / $("div").index($("div:contains('Third')"));
   // div 안에서 div에 'Third'라는 단어를 포함하고 있는 div index 값

$.inArray() <jQuery.inArray()> : 대상 배열 내의 값을찾아서 인덱스를 반환한다. ; 첫번째 배열은 0, 요소가 없으면 -1
   / $.inArray("John", arr);     // arr 배열에서 "John"의 인덱스를 찾아서 반환

.find() : 선택된 요소의 자식노드에서 인자의 요소를 찾는다.
   / $("#div").find(ul); // id div의 자식노드에서 ul 요소를 찾는다.

.filter() : 선택된 요소를 포함한 노드에서 인자의 요소를 찾는다.
   / $("#div").filter(ul); // id div 노드 자신을 포함한 요소에서 ul 요소를 찾는다.

.end() : jQuery 함수를 연쇄적으로(chain)으로 사용할 경우 앞쪽에 이미 선택되었던 요소로 돌아간다.

  $('ul:first').find('.foo).css('background-color' , 'red')  // ul의 첫번째 요소에서 class=foo를 찾아 배경 변경
      .end().find('bar').css('background-color', 'green'); // find를 호출하기 전의 요소($('ul:first))에서 class=bar를 찾아 배경 변경

.each() : 다중 요소를 순서대로 선택한다.
  / $("div").each(function(i,element){
      // div 요소를 순서대로 선택한다.  i: 순서 시작은 0 ,  element : 선택된 요소
  });

.has() : 인자를 가지고 있는 확장집합을 선택
   / $("li").has("ul");   // li 요소중 ul을 가지고 있는 요소만 선택

.slice() : 선택한 요소 집합을 인자의 범위로 잘라낸다.
  / $("img").slice(2).css(...);   
  // img 요소의 세번째 요소부터 끝 요소까지 css 적용
  / $("img").slice(2, 4).css(...);   
  // img 요소의 세번째 요소부터 5번째 요소를 만날때까지(4번째) css적용
  / $("img").slice(-2, -1).css(...);   
  // img 요소의 끝에서 두번째 요소부터 끝에서 첫번째 요소를 만날때까지 css적용

.clone() : 선택된 요소를 복사한다. / $("#img").clone();  // id img DOM을 복사한다.

.closest() : 현재 위치한 요소에서 DOM 트리를 탐색하여 일치된 요소를 선택한다.

   $("#name").closest("ul");   // id name 요소에서 가장 가까운 ul을 선택한다.
   $("#name").closest("ul", "#code");   // id code 요소 아래의 id name 요소에서 가장 가까운 ul을 선택한다.

.andSelf() : 선택된 구조 요소를 이어붙인다.

   / $('div').find('p').andSelf().css(..); 
   // div와 내부의 p요소를 선택해서 결합 후 css 적용

.offsetParent() : 위치(css:position) 요소를 기반으로 한 부모 요소를 찾는다.
   / $('li.item-a').offsetParent().css(..);   // li의 item-a 클래스의 css position상 가장 가까운 부모요소에 css를 적용

$.grep() <jQuery.grep()> : 배열 요소를 조건에 따라 필터링하여 제거 한다. 특정 로직에 의해 true가 되는 결과만 반환

      / $.grep([0,1,2], function(n,i){ return n>0;});     
      // 배열 [0,1,2] 에서 0보다 큰값을 반환 [1,2]
     / $.grep([0,1,2], function(n,i){ return n>0;}, true);     
     // 배열 [0,1,2] 에서 0보다 크지 않은 값을 반환 [0]

$.proxy() <jQuery.proxy()> : jQuery의 네임스페이스를 관리할 수 있게 한다. "this" 키워드를 통하여 다른 개체를 유지할 수 있게 한다.

    var app={
config : {  clickMessage : Hi!" },       
      // config 메서드에 clickMessage를 정의

clickHandler : function(){                // clicHandler 메서드 함수 정의
         alert( this.config.clickMessage); 
            // this:app 의 config 메시지의 clickMessage를 알람

}

$('a).bind('click', app.clickHandler); 
// 실행되지 않는다. jQuery 이벤트 모델에 의해 this가 app 이 아니다.

$('a').bind('click', .proxy(app, 'clickHandler')); 
// this 키워드를 유지한채 실행된다.

- 삽입

.after() : 지정한 요소 뒤에 새로운 요소를 삽입 / A.after( B) / A뒤에 B를 추가
.insertAfter() : 지정한 요소 뒤에 새로운 요소를 삽입
/ A.insertAfter(B) / B뒤에 A를 추가

.append() : 지정한 요소 뒤에 내용 삽입
/ $("div").append("<p>내용</p>");    // div 뒤에 <p>내용</p> 를 삽입한다.

.appenTo() : 지정한 내용을 요소 뒤에 삽입
/ $("<p>내용</p>").appendTo($("div"));   // <p>내용</p>를 div 뒤에 삽입한다.

.before() : 지정한 요소의 앞에 요소를 삽입 / A.before(B) / A 앞에 B를 추가

.insertBefore() : 지정한 요소의 앞에 요소를 삽입
/ A.insertBefore(B) / B 앞에 A를 추가

.prepend() : 지정한 요소 앞에 내용 삽입
/ $("div").prepend("<p>내용</p>");    // div 앞에 <p>내용</p> 를 삽입한다.

.prependTo() : 지정한 내용을 요소 앞에 삽입
/ $("<p>내용</p>").prependTo($("div")); 
// <p>내용</p>를 div 앞에 삽입한다.

.pushStack() : jQuery 스택에 DOM 요소를 추가한다.
/ $("#ids").pushStack($("div")); 
// id ids 요소에 jQuery 스택에 div 요소를 추가한다.

.wrap() : $() 형식으로 쓰는 함수의 선택한 요소 각각을 문자열 또는 객체로 감싼다.
./ $(".inner").wrap('<div class="new" />'); 
// class=inner 집합 요소 각각을 <div class ="new"></div>
./ $(".inner").wrap(function(){

return '<div class="new" />'); 

// class=inner 집합 요소 각각을 <div class ="new"></div>
});

.unwrap() : 선택한 요소 집합의 부모를 제거한다.
./ $(".inner").wrap();   // class=inner 집합 요소의 부모를 제거한다.

.wrapAll() : $() 형식으로 쓰는 함수의 선택한 요소 전체를 문자열 또는 객체로 감싼다.
./ $(".inner").wrapAll('<div class="new" />'); 
// class=inner 집합 요소 전체를 <div class ="new"></div>

.wrapInner() : $() 형식으로 쓰는 함수의 선택한 요소 각각의 내부를 문자열 또는 객체로 감싼다.
./ $(".inner").wrapInner('<div class="new" />'); 
// class=inner 집합 요소 각각의 내부를 <div class ="new"></div> 로 감싼다

- 삭제
.detach() : 지정한 요소를 포함 하위 요소 모두 제거
/ $("div").detach();    // div를 포함 하위 요소 모두 제거

.empty() : 지정한 요소의 하위 요소를 제거
     / $("div").empty();    // div 하위 요소 모두 제거

.remove() : 지정한 요소를 포함 하위 요소 모두 제거, 요소와 관련된 이벤트와 데이터 모두 제거
/ $("div").remove();    // div 포함 하위 요소, 이벤트, 데이터 모두 제거

- 변경, 변환
.text() : 해당 요소에 text 요소를 삽입 또는 변경한다.

.html() : 해당 요소에 html 요소를 삽입 또는 변경한다.

.val() : 해당 요소의 value 값을 삽입 또는 변경한다.

.replaceAll() : 해당 요소들로 인자 요소를 대체한다.
/ $('<h2>New heading</h2>').empty($("div"));   
// div 요소를 <h2>New heading</h2> 요소로 변경한다.

.replaceWith() : 해당 요소들을 인자의 요소로 바꾼다.  ; replaceAll() 과 선택,인자(target)이 반대
/ $("div").empty('<h2>New heading</h2>');   
//  <h2>New heading</h2> 요소로 div 요소를 변경 시킨다.

.toArray() : 선택한 요소 DOM 집합을 자바스크립트 배열로 만든다.
/ var arr = $("div").toArray();    //  arr[0] === <div>Hello</div>

$.makeArray <jQuery.makeArray()> : jQuery 집합의 요소 값을 JavaScript 배열로 변환한다.
/ var arr = $.makeArray($("input"));      //  arr[0] === "Hello"

$.map() <jQuery.map()>
.map() : 선택된 배열 요소를 순서대로 callback 함수를 통해 얻어진 리턴값을 포함하는 새로운 jQuery 오브젝트 생성

    / var arr = $("div").map(function(){
           return $(this).text().toUpperCase();      // 선택된 요소들의 text값을 대문자로 변경한다.
    });

    / var arr = $("div").map({width : 10, height: 15} ,function(value, index){
           return index;      //  key를 반환한다.  ["width", "height"]
});

$.globalEval() <jQuery.globalEval()> : 문자열로 명령어를 실행시켜준다.

    / $.globalEval("var newVar = true;")      // newVar == true

$.merge() <jQuery.merge()> : 두개의 배열을 첫번째 배열에 합칩니다.

    / $.merge([0,1,2],[2,3,4]);      // 첫번째 배열 결과 : [0,1,2,2,3,4]
    / $.merge($.merge([],[0,1,2]),[2,3,4]);     
   // 첫번째 배열의 값을 유지하기 위해 새로운 배열을 만든다.

$.trim() <jQuery.trim()> : 문자열 앞뒤에 있는 공백 문자를 제거하고 결과 반환
    / var trimStr = $.trim(str);      // str === "   abc def ff  ";    trimStr === "abc def ff";

$.unique() <jQuery.unique()> : element 배열의 중복된 모든 element를 제거한다. ; string, number 배열에서는 동작 X
    / var divs = $.unique(divs);      // divs의 중복 선택되어 들어간 element를 제거한다.

$.parseJSON() <jQuery.parseJSON()> : JSON문자열을 JavaScript object로 반환한다.
    / var obj = $.parseJSON('{"name":"John"}');   
    // 문자열 {"name":"John"}을 JavaScript object로 변환한다.
    / alert(obj.name==="John");     // JavaScriptObject인 obj에서 name 요소인 John

    - 참고 : 형식이 어긋난 JSON 문자열을 인자로 사용하면 exception이 발생한다.
       문자열의 key 와 value 는 쌍따옴표("")를 사용해야 한다.

$.parseXML() <jQuery.parseXML()> : 유효한 XML문서를 파상한다.

    $title = $.parseXML(xml).find("title");  // xml 파일에서 title의 값을 찾는다.

- 확장

$.noop() <jQuery.noop()> : 비어있는 함수 (function(){})
$.noConflict() <jQuery.Conflict()> : 다른 JavaScript 라이브러리와 함께 사용할때 $의 충돌을 막기위해 사용

$.sub() <jQuery.sub()> : 새로운 jQuery 함수를 정의할때, 네임스페이스의 충돌로 다른 개발자의 함수에 영향을 주지 않도록 캡슐화된 플러그인을 만들고자 할때 $.sub() 로 복사하여 사용

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

    sub$(document).ready(function() {
      sub$('body').myCustomMethod() // 'just for me'
    });
  })();

  typeof jQuery('body').myCustomMethod // undefined

$.extend() <jQuery.extend()> : 첫번째 인자에서 두번째 인자를 병합하며, 확장한다.
     (1) 두번째 인자값이 첫번째 인자값의 같은 옵션을 대체하며 확장
         var object1 = { apple : 0,  banana : {weight : 52, price : 100}, cherry : 97 };
         var object2 = { banana : {price : 200},  durian : 100 };
         $.extend(object1, object2);

결과 : object1 = { apple: 0, banana: { price: 200 }, cherry: 97, durian: 100 };

        (2) 첫번째 인자값의 원본 값을 유지하며 병합
         var object1 = {  apple: 0,  banana: {weight: 52, price: 100},  cherry: 97};
         var object2 = {  banana: {price: 200},  durian: 100};
         $.extend(true, object1, object2

결과 : object1 == { apple: 0, banana: { weight: 52, price: 200 }, cherry: 97, durian: 100 }

             (3) 요소에 적용할 명령어 확장
                    $.fn.extend({
                         myMethod : function(){...}
                    });

                    -> $("div").myMethod();

                (4) 함수 실행 JQuery 명령어 확장
                     $.extend({
                          myMethod2 : function(){...}
                      });
                           -> $.myMethod();

[jQuery] jQuery API (2/7) - 속성(CSS), 추출

2. 속성(CSS), 추출
- 속성(CSS)

.addClass() : 지정한 요소에 class 값을 추가한다.
    $("p").addClass("name");  // class = "name" 추가

.hasClass() : 지정한 요소에 class 유무를 확인한다.
    if($("p").hasClass("name")==true)  // class 가 "name"인지 확인 true/false

.removeClass() : 지정한 요소에 class 값을 제거한다.
     $("p").removeClass("name");  // class = "name"을 제거

.toggleClass() : 지정한 요소에 class를 추가/제거
     $("p").toggleClass("name");  // class = "name"이 있으면 제거 / 없으면 추가

.attr() : (1) 지정한 요소의 속성값을 입력 또는 변경한다.
     $("a").attr("href", "http://www.googlec.co.kr");  // a 요소의 href 값을 변경한다.
     $("#content").attr({id:'content01', class:'style1'});  // id content 요소의 id와 class 값을 변경한다.
          (2) 지정한 요소의 속성값을 가져온다.
             $("a").attr("href");     // a 요소의 href의 값을 가져온다.

.removeAttr() : 지정한 요소의 속성값을 제거한다.
     $("a").removeAttr("href");  // a 요소의 "href" 속성값을 제거한다.

.prop() : .attr()과 동일하나, boolean 값을 사용하는 속성에 사용한다. checked, selected, disabled

.removeProp() : removeProp()과 동일하나, boolean 값을 사용하는 속성에 사용한다. checked, selected, disabled

.css() : (1) 지정한 요소의 css 값을 삽입 또는 변경한다..
      $("div").css("color", 'red');  // div 요소의 글자색을 red로 설정한다.
      $("div").css({color:'red', border:'1px solid blue'});  // 동시에 여러개의 값을 설정할 수 있다.
      (2) 지정한 요소의 속성값을 가져온다.
          $("div").css("backgroundColor");     // div 요소의 backgroud-Color 값을 가져온다.
            참고 - css의 속성명과 jQuery에서 쓰는 속성명은 형식이 조금 다르다.
                      css : background-color , jQuery : backgroundColor
                      css : padding-left, jQuery : paddingLeft

.width() : 선택한 요소의 현재의 계산된 넓이를 얻거나 넓이 값을 설정한다.
      $("div").width();  // div 의 현재 넓이 값 (숫자로 반환, .css('width')는 숫자뒤에 px가 붙어 반환 400px)
      $("div").width(30);  // div의 넓이를 30으로 설정한다. { 30, 30px, 30%, auto }

.innerWidth() : 선택한 요소의 padding을 포함한 넓이를 반환한다. (border 제외)
      $("div").innerWidth();  // div 의 padding을 포함한 현재 넓이

.outerWidth() : 선택한 요소의 padding 과 border를 포함한 넓이를 반환한다. (인자값 true 면 margin 포함)
      $("div").outerWidth();  // div 의 padding과 border 포함한 현재 넓이
      $("div").outerWidth(true);  // div 의 padding과 border, margin 포함한 현재 넓이

.height() : 선택한 요소의 현재의 계산된 높이를 얻거나 높이 값을 설정한다.
      $("div").height();  // div 의 현재 높이 값 (숫자로 반환, .css('height')는 숫자뒤에 px가 붙어 반환 400px)
      $("div").height(30);  // div의 높이를 30으로 설정한다. { 30, 30px, 30%, auto }

.innerHeight() : 선택한 요소의 padding을 포함한 높이를 반환한다. (border 제외)
      $("div").innerHeight();  // div 의 padding을 포함한 현재 높이

.outerHeight() : 선택한 요소의 padding과 border를 포함한 높이를 반환한다. (인자값 true면 margin 포함)
      $("div").outerHeight();  // div 의 padding과 border를 포함한 현재 높이
      $("div").outerHeight(true);  // div 의 padding과 border, margin을 포함한 현재 높이

.data() : (1) 지정한 요소에 값을 삽입 또는 변경한다.
      $("div").data("foo", '52');  // div 요소에 "foo" 라는 key로 52를 삽입한다.
      $("div").data("bar", {color:'red', border:'1px solid blue'});  // "bar" 라는 key로 배열 삽입
      $("div").data({baz : [1,2,3]});  // baz 배열 삽입
   (2) 지정한 요소의 값을 가져온다.
      $("div").data("foo");  // div 요소에 "foo"라는 key로 저장된 값을 가져온다.
      $("div").data();  // div 요소에 전체 값을 가져온다. {foo:52, bar:{color....}, baz:[1,2,3,4]}

$.data() <jQuery.data()> : 첫번째 인자의 요소에 두번째 인자를 키로 세번째 값을 저장한다. .data()와 동일
    $.data(document.body, "foo",'52');    // 페이지 body 요소에 foo를 키로 52 삽입

.removeData() : 지정한 요소에 데이터를 제거한다.
     $("div").data("foo");  // div 요소에 "foo" 라는 key의 데이터를 제거한다.

$.removeData() <jQuery.removeData()> : 지정한 요소에 데이터를 제거한다.
     $.data($("div"), "foo");  // div 요소에 "foo" 라는 key의 데이터를 제거한다.

$.hasData() <jQuery.hasData()> : $.data()에 의해 저장된 임의의 값들이 있는지 확인한다.  true / false
     if(.$.hasData(document.body)==true)   // document.body에 data가 있으면 true 

- 추출

$.browser <jQuery.browser> : JQuery가 실행되는 browser의 version, browser 종류를 Map 형식으로 리턴한다.
       $.each($.browser,function(i, val){
                result += i +":" + val;     //   결과 msie:true version:7.0   
  }

참고 - $.browser.version : 브라우저의 버전을 문자열로 리턴
$.browser.safari : 사파리 브라우저 여부 true & false 리턴
$.browser.opera : 오페라 브라우저 여부 true & false 리턴
$.browser.msie : Internet Explorer 브라우저 여부 true & false 리턴
$.browser.mozilla : Mozilla 브라우저 여부 true & false 리턴

$.support <jQuery.support> :
브라우저마다의 기능의 차이나 버그등의 정보를 구조체로 반환 ; 1.3 이후 버전에서는 $.browser 대신 $.support를 사용 권장

옵션값 : http://api.jquery.com/jQuery.support/

.size() : 선택한 요소 배열의 길이를 반환한다.
     var num = $("div").size();  // num은 div의 배열 크기를 숫자로 반환한다.

.length : 선택한 요소의 배열의 길이를 반환한다.  (선택 요소에 "" 는 적용이안된다. '' 사용)
      var num = $('div').length;  // num은 div의 배열 크기를 숫자로 반환한다

.offSet() : 선택한 요소의 전체 문서 내(document)에서의 left, top 좌표를 구한다.
      var offset = $('div:last').offset();  // div 마지막 요소의 left, top 좌표 반환 offset.left / offset.top

.position() : 선택한 요소의 부모요소를 기준으로 left, top 좌표를 구한다.
      var position = $('div:last').position();  // div 마지막 요소의 부모로부터의 left, top 좌표 반환 position.left / position.top

.scrollLeft() : 선택한 요소의 스크롤바의 수평 위치(x좌표)를 얻거나 변경한다.
      var x= $('div:last').scrollLeft();  // div 마지막 요소의 현재 수평 스크롤 x좌표를 반환한다.
      var x= $('div:last').scrollLeft(300); // div 마지막 요소의 수평 스크롤 x좌표를 300으로 이동한다.

.scrollTop() : 선택한 요소의 스크롤바의 수직 위치(y좌표)를 얻거나 변경한다.
      var x= $('div:last').scrollTop();  // div 마지막 요소의 현재 수직 스크롤 y좌표를 반환한다.
      var x= $('div:last').scrollTop(300); // div 마지막 요소의 수직 스크롤 y좌표를 300으로 이동한다.

$.type() <jQuery.type()> : 인자의 obj의 type을 반환한다.
      $.type(undefined) === "undefined" //
      $.type() === "undefined" //
      $.type(null) === "null" //
      $.type(true) === "boolean" //
      $.type(3) === "number" //
      $.type("test") === "string" //
      $.type(function(){}) === "function" //
      $.type([]) === "array" //
      $.type(new Date()) === "date" //
      $.type(/test/) === "regexp" //

$.now() <jQuery.now> : 현재 시간을 number로 반환
       $.now() // result : 1340954729007     (new Data).getTime();

$.fx.interval<jQuery.fx.interval> : 브라우져 애니메이션 프레임 조절
    / $.fx.interval = 1000;    // 프레임을 1000으로 변경한다.

$.fx.off<jQuery.fx.off> : 모든 애니메이션 효과를 전역적으로 끈다.
    / $.fx.off = true;    // 애니메이션 효과를 끈다.

[jQuery] jQuery API (3/7) - 검증

3. 검증
.is() : 현재 상태를 확인하여 반환한다. true / false
      var chk = $("div").is(":animated");   // chk 는 true, false

$.contains() <jQuery.contains()> : 첫번째 인자 요소에 두번째 인자 요소를 가지고 있는지 확인한다.
      $.contains($("#name"), $("#code"))   // #name 요소 아래에 #code 요소가 있다면 true

$.isArray() <jQuery.isArray()> : 인자가 배열인지 확인한다.
      $.isArray(arr)   // arr이 Array 인지 체크  true / false

$.isEmptyObject() <jQuery.isEmptyObject()> : 인자가 empty 인지 체크한다.
      $.isEmptyObject(arr)   // arr 이 empty 인지 체크  empty : true / false

$.isFunction() <jQuery.isFunction()> : 인자가 JavaScript 함수인지 체크한다.
      $.isFunction(function(){});  // function(){}가 함수인지 체크한다. : true / false

$.isPlainObject() <jQuery.isPlainObject()> : 인자가 plain Object인지 확인한다. (Plain Object : "{}" 나 "new Object"로 만들어진)  ; IE8에서는 Error
     $.isPlainObject({});   // {}가 Plain Object 인지 체크 한다. true /false

$.isWindow() <jQuery.isWindow()> : Window 인지 판별한다.
        $.isWindow(window);   // window가 Window 인지 체크 true / false

$.isXMLDoc() <jQuery.isXMLDoc()> : XML 문서의 DOM 노드 또는 XML 문서인지 체크
        $.isXMLDoc(document);   // document가 xml 문서인지 확인 : false

[jQuery] jQuery API (4/7) - 효과

4. 효과
.animate() : 해당 객체의 CSS 변화 효과를 준다.  /$('p').animate({CSS Map}, {options});
        / $('p).animate({color:'white', font-size : 22px}, {duration : 400, easing : 'ease-in',
             complete : function(){....}});  {queue:false}

.delay() : 해당 시간만큼 실행을 delay 시킨다.
            / $("div").slideDown().delay(5000).slideUp();  // id div 요소를 슬라이드 다운 후 5초 후 슬라이드 업 한다.

.stop() : 실행중인 애니메이션을 중지한다.
        $("div").stop();                      // div의 큐의 애니메이션을 멈춘다.

.show() : 해당 요소를 보여준다.
        $("div").show();            // div 가 나타난다.
        $("div").show(1000);            // div 가 1초에 걸쳐서 나타난다.

.hide() : 해당 요소를 숨긴다.
        $("div").hide();                      // div가 사라진다.
        $("div").show(1000);            // div 가 1초에 걸쳐서 사라진다.

.toggle() : 해당 요소가 show 상태면 hide() / hide 상태면 show() 실행
        $("div").toggle();                      // div가 hide 상태면 show() / show 상태면 hide()한다.

$("div").toggle(1000);            // div 가 1초에 걸쳐서 toggle() 한다.

.fadeIn() : 서서히 나타나게 한다.
        $("div").fadeIn();                      // div가 서서히 나타난다.
        $("div").fadeIn("slow");                      // div가 천천히 서서히 나타난다.
        $("div").fadeIn(3000");                      // div가 3초에 걸쳐서 서서히 나타난다.

.fadeOut() : 서서히 사라지게 한다.

.fadeToggle() : show 상태면 fadeOut(), hide 상태면 fadeIn()이 실행된다.

.fadeTo() : 주어진 시간동안 주어진 투명도로 변화한다.
        $("div").fadeTo("slow", 0.15);                      // 천천히 투명도 0.15 로 변화
        $("div").fadeTo("slow", 0.15);                      // 천천히 투명도 0.15 로 변화

.slideDown() : 선택 요소가 슬라이드 되어 내려온다.
        $("div").slideDown();                      // div가 아래로 내려온다.
        $("div").slideDown("slow");                      // div가 천천히 아래로 내려온다..
        $("div").slideDown(3000");                      // div가 3초에 걸쳐서 아래로 내려온다.

.slideUp() : 선택 요소가 슬라이드 되어 올라간다.

.slideToggle() : 선택 요소가 slideDown 상태면 slideUp(), slideUp 상태면 slideDown()을 실행

.queue() : 애니메이션이 chain으로 연속적으로 연결될 때, 애니메이션이 아닌 실행 함수를 큐에 저장 한다.(ex: class 속성 변경)

.dequeue() : queue에 쌓여있는 나머지 함수를 실행한다.

       $("div").show("slow").animate({left:'+=200'}. 2000)    // id div 요소가 천천히 나타난 후, 2초간 오른쪽으로 200이동한다
       $("div").queue(function(){                                      // queue의 함수를 호출한다.
               $(this).addClass("newcolor");                            // id div 요소의 class를 newcolor 등록
                $(this).dequeue();                                            // 다음 애니메이션 실행
       });

        $("div").animate({left:'-=200'}, 500);                        // 05초간 왼쪽으로 200 이동한다.

.clearQueue() : queue에 쌓인 것을 삭제한다. 현재 실행중인 queue는 계속 실행된다. 

          $("#stop").click(function(){                   // id stop 요소를 클릭하면
                   $("div").clearQueue();                      // div의 queue가 비워진다. 실행중인 큐는 진행한다.
           });

[jQuery] jQuery API (5/7) - Event

5. Event
 - event 제어

.bind() : event가 발생하면 실행될 함수를 지정한다. (이미 생성된 DOM에 대하여)

        / $("#image").bind("mousedown", function(){
                    // id image 요소에 마우스를 클릭했을 때, 해당 함수 실행 지정
           });

.unbind() : bind()를 해제한다.

.live() : 동적으로 생성된 DOM 객체들의 이벤트를 연결한다. (이벤트 버블 발생 가능)

       / $("#image").live("click", function(){
                    // id image 요소에 마우스를 클릭했을 때, 해당 함수 실행 지정
           });

.die() : live() 제거

.delegate() : 동적으로 생성된 DOM 객체들의 이벤트를 연결한다. (이벤트 버블 방지)

      / $("#image").delegate("td", "click", function(){
                    // id image 요소 밑의 'td'에 마우스를 클릭했을 때, 해당 함수 실행 지정
           });

.undelegate() : delegate() 제거

.on() : 동적으로 생성된 DOM 객체들의 이벤트를 연결한다. (1.7 이후 버전)

      / $("#image").on("click", "td", function(){
                    // id image 요소 밑의 'td'에 마우스를 클릭했을 때, 해당 함수 실행 지정
           });

     / $("#image").on("click", "td",{foo: "bar"}, function(event){
                      alert(event.data.foo);
                    // id image 요소 밑의 'td'에 마우스를 클릭했을 때, {foo:"bar"}를 event에 넣어 함수 실행
           });

.off() : on() 제거 (1.7 이후 버전)

.one() : bind() 함수처럼 선택된 이벤트를 지정한다. 하지만 딱 한번만 이벤트가 실행된다.

.trigger() : 선택된 요소의 이벤트를 발생시킨다.

             / $("#img").trigger("click")    // id img 요소에 click 이벤트를 발생시킨다.

.triggerHandler() : trigger() 함수와 비슷하게 동작한다.
                             - form submission에는 동작하지 않는다.
                             - 선택된 요소들중 가장 첫번째 요소만 영향을 미친다.
                             - 브라우저 기본동작, 버블링, live Events는 일어나지 않는다.

 $('element").명령어(function(event){
              // element 요소에 명령어 실행시 함수 동작
    });

 - 웹 브라우져 Event

.load() : 문서가 불려졌을 때

.unload() : 문서가 닫혔을 때

.ready() : DOM이 모두 준비 되었을 때 함수 실행

$.holdReady() <jQuery.holdReady()> : DOM이 로드되는 것을 지연시켜준다. ; js 파일을 불러들이고 동작을 할때, js가 로드되지 않은 시점에 DOM이 로드 되는것을 방지해준다. / head 영역에 선언하는게 좋다.
               $.holdReady(true);                             // DOM이 로드되는 것을 멈춘다.
               $.getScript("myplugin.js", function(){    // myplugin.js 파일을 가져온다.
                   $.holdReady(false);                         // 파일 로드가 성공하면 DOM을 구성한다.
               });

.resize() : 창 크기가 변경되었을 때 함수 실행

.scroll() : HTML 문서가 스크롤 되었을 때

.error() : 선택된 개체(images, window, document 등)가 정확하게 로드(load)되지 않을 경우 발생 오류 이벤트
            <img src="missing.png" alt="Book" id="book" />
            $('#book').error(function(){
                     // 이미지가 로드되지 않을 경우 함수 실행
             });

 - 마우스 Event

.click() : 마우스 클릭시

.dblclick() : 마우스 더블 클릭시

.mousedown() : 마우스 버튼을 누른 순간

.mouseup() : 마우스 버튼을 놓는 순간

.mouseover() : 대상에 마우스 커서가 위치했을 때

.mouseseenter() : 대상에 마우스가 위치했을 때

.mousemove() : 대상에서  마우스 커서가 움직였을 때

.mouseout() : 대상에서 마우스가 벗어 났을때

.mouseleave() : 대상에서 마우스가 벗어났을 때

.hover() : 마우스가 요소에 오버되었을때 첫번째 함수가 실행되고, 마우스가 요소를 떠날때 두번째 함수가 실행된다.

        / $("#p1").hover(function(event){
                    // 마우스가 오버되었을때 함수 실행
            },
            function(){
                   // 마우스가 떠날때 함수 실행
             });

.toggle()

 - 키보드 Event
.keypress() : 키 입력 시 발생(enter, tabemd의 특수키 제외)
.keydown() : 키 입력을 누르고 있을 때, 모든 키에 대해 적용
.keyup() : 키 입력 후 발생

- form Event
.select() : 선택한 개체를  선택 했을 때
.change() : <input />, <textarea />, <select /> 요소의 값 변경시 실행
.focus() : 해당 요소에 포커스를 받았을 때 실행되는 함수
.focusin() : focus() 의 업그레이드(1.4)

.blur() : 해당 요소에 포커스를 잃었을 때 실행되는 함수
.focusout() : blur()의 업그레이드(1.4)
.submit() : submit이 일어날 때

- event 함수 option 처리
event.target : event를 발생시킨 Target

event.currentTarget  : event 버블링으로 현재 이벤트 발생되는 Target
event.relatedTarget : 해당 이벤트와 관련된 다른 DOM 요소 선택

event.result :해당 이벤트가 실행한 이벤트 핸들러 함수에 의해 리턴되는 가장 마지막 값
event.data : event 대상이 가지고 있는 값

event.namespace : 이벤트가 tirgger 됐을때, 발생한 이벤트의 namespace

event.pageX : 이벤트가 발생한 요소의 문서의 왼쪽부터의 위치

event.pageY : 이벤트가 발생한 요소의문서의 상단으로부터의 위치

event.timeStamp : event가 실행된 시간
event.type : 실행된 event 타입

event.which : 이벤트가 발생된 요소의 key (키보드 값<숫자>, 마우스 <왼쪽 1, 중간 2, 오른쪽 3>)

event.preventDefault() : 해당 요소에 걸려있는 다른 이벤트를 무력화 한다.

event.isDefaultPrevented() : event.preventDefault() 상태인지 체크 true / false

event.stopPropagation() : 다른 이벤트 핸들러가 호출되는 것을 막는다.(이벤트 버블링)

event.stopImmediatePropagation() : 다른 이벤트 핸들러가 호출되는 것을 막는다. (이벤트 버블링)

event.isPropagationStopped() : event.stopPropagation()이 호출 됐는지 여부 리턴 true / false
event.isImmediatePropagationStopped() : event.stopImmediatePropagation()이 호출됐는지 여부 리턴 true /false

[jQuery] jQuery API (6/7) - Ajax

6. Ajax
$.param() <jQuery.param()> : 폼 요소들의 값을 변환하여 직렬화된 문자열로 표현한다.
                     var params = {width : 1680, height : 1050}; // 배열 선언
                     var str = $.param(params);                    // Ajax로 전송가능하도록 직렬화
                     // $.param({a:[2,3,4]});  // "a[]=2&a[]=3&a[]4"
                     // $.param({a:{b:1,c:2},d:[3,4,{e:5}] }); // "a[b]=1&a[c]=2&d[]=3&d[]=4&d[2][e]=5"

.serialize() : 선택한 form의 데이터를 ajax로 전송할 수 있도록 직렬화 한다.
        / $("#name").serialize();    //  id name form의 데이터를 직렬화한다. a=1&b=2

.serializeArray() : 선택한 form의 데이터를 ajax로 전송할 수 있도록  배열로 직렬화 한다.
         / $("#name").serializeArray();    //  id name form의 데이터를 배열로 직렬화한다. [ { name : "a", value : "1" }, { name : "c", value:"3"}]

$.ajax() <jQuery.ajax()> : ajax 비동기 호출 전송
         $.ajax({
                type : 'POST',                                    // post 타입 전송
                url : 'some.php',                                // 전송 url
                data : "name=John&location=Boston",   // 전송 파라미터
                cache : false,                                  // ajax로 페이지를 요청해서 보여줄 경우
                                                  // cache가 있으면 새로운 내용이 업데이트 되지 않는다.
               async : true,                                    // 비동기 통신,  false : 동기 통신
               beforSend : fucntion(){                     // ajax 요청이 전송되기 전 실행 함수
                },
               success : function(msg){                   // 콜백 성공 응답시 실행
                },
               error : function(){                              // Ajax 전송 에러 발생시 실행
                },
             complete : function(){                       //  success, error 실행 후 최종적으로 실행
                  }
            });

.ajaxSend()  : ajax 요청이 서버로 보내지기전에 호출됨

.ajaxStart()  : ajax 요청이 서버로보내진 직후에 호출됨.

.ajaxStop()  : 응답을 서버로부터 받은 직후에 호출됨

.ajaxSuccess() : 요청이 성공적으로 완료된 후에 호출됨

.ajaxError()  : ajax 실행 후 에러 발생시 함수 실행 / $.ajax() 옵션의 error와 동일

.ajaxComplete() : ajax 실행 후 최종적으로 함수 실행 / $.ajax() 옵션의 complete 와 동일

$.ajaxPrefilter() <jQuery.ajaxPrefilter()>  : ajax 요청을 보내기 전에 Ajax 옵션들을 수정하거나 조작한다.

         $.ajaxPrefilter(function(options)){
                // options : request 요청 옵션 값들
          });

$.ajaxSetup() <jQuery.ajaxSetup()> : 앞으로 발생할 ajax 요청에 대한 디폴트 값을 설정한다.

         $("button").click(function(){       // button을 클릭할시 ajax 호출에 대한 
               $.ajaxSetup({                      // url과 success 함수를 셋팅한다.
                       url : "test_ajax.txt",
                       success:function(result){
                 })
         });

$.get() <jQuery.get()> : get 방식으로 ajax 통신을 한다. 서버에서 가져온다.
      $.get("test.php", function(data.status){..});   // "test.php"로 get 방식 통신 후 function 실행 

$.getJSON() <jQuery.getJSON()> : $.get()과 동일하나, 데이터 타입은 json 타입이다.

$.getScript() <jQuery.getScript()> : $.get()과 동일하나, 데이터 타입은 script, 동적으로 자바스크립트를 불러온다.

$.post() <jQuery.post()> : post 방식으로 ajax 통신을 한다. 서버와 파라미터로 데이터를 주고받는다.

    $.post("test.php",                                // "test.php"로

             {                                                //   name과 message 파라미터
                 name: "myeonghyeon",
                 message : "hi"
              },

              function(data.status){..}             // callback() 함수 실행

       );   // "test.php"로 파라미터를 보내 post 방식 통신 후 function 실행 

.promise() : 비동기함수(Ajax)가 리턴한 객체를 가진다.

.promise().done(); : 선택된 비동기함수 리턴 객체의 콜백이 성공, done 함수 실행

   $("div").promise().done(function(){

       $("p").append("Finished");     // 모든 div 요소의 요청이 모두 성공하면, done 실행, p 요소에 finished 삽입

    });

.promise().fail();  : 선택된 비동기함수 리턴 객체의 콜백이 실패, fail 함수 실행

.promise().then();  : 콜백이 성공하면(success) 리턴데이터를 then의 인자가 받아서 실행

      $("div").promise().then(A).then(B);   // div에 주어진 액션이 성공하면 리턴값을 가지고 A 함수 실행 A함수 리턴값을 가지고 B 함수 실행

$.when() <jQuery.when()> : 인자의 함수의 콜백 후 리턴값을 반환한다.

     $.when( effect() ).done(function(){

         $("p").append("finished");  // effect() 함수를 실행해서 성공하면 p 에 finished를 삽입한다.

      });

      $.when( A, B ).done(function(){

        // 동시에 A,B 함수를 실행하고 모두가 성공할 경우 .done(function() 실행

      });


$.deferred() <jQuery.deferred()>  : $.ajax가 반환하는 객체, pomise 객체와 같은 일을 할 수 있으며 추가적인 콜백 함수를 가진다.

deferred.always()  : 요청이 성공, 실패에 무관하게 항상 실행된다.

deferred.done() : 요청이 성공시 실행된다.

deferred.fail() : 요청이 실패시 실행된다.

deferred.isRejected() : 요청이 실패됐는지 확인한다.

deferred.isResolved() : 요청이 성공했는지 확인한다.

deferred.pipe() : 요청의 return 값을 인자로 넘겨준다.

deferred.promise() : 요청의 콜백을 객체로 가지고 있는다.

deferred.reject() : 요청이 실패시 fail() 함수를 호출한다.

deferred.rejectWith()

deferred.resolve() : 요청이 성공시 done() 함수를 호출한다.

deferred.resolveWith()

deferred.then() : 두개의 인자를 가지고 두개 모두 성공할 때 resolve(), 하나라도 실패하면 reject() 실행


[jQuery] jQuery API (7/7) - 선택자

- "*" : 전체 선택자

속성 선택자

- [name] : name 속성이 있는 요소를 선택

- [name = "value"][name2 = "value2"] : name 속성의 값이 value이고 name2 속성의 값이 value2 인 요소를 선택

- [name = "value"] :  name 속성의 값이 value인 요소를 선택한다.

- [name != "value"] :  name 속성의 값이 value가 아닌 요소를 선택한다.

- [name ^= "value"] :  name 속성의 값이 value로 시작하는 요소를 선택한다.

- [name |= "value"] :  name 속성의 값이 value 이거나 value로 시작하는 요소를 선택한다.

- [name *= "value"] :  name 속성의 값에 value가 들어 있는 요소를 선택한다.

- [name ~= "value"] :  name 속성의 값이 value를 포함하는, 쉼표로 구분된 문자열 요소를 선택.

- [name $= "value"] :  name 속성의 값이 value로 끝나는 요소를 선택한다.


태그 선택


- div : 태그명이 div인 모든 Element 선택

- div p : div 요소의 자식 요소중 태그명이 p인 요소 선택

- div, p : div 요소와 p 요소를 선택

- div > p : div 요소의 바로아래 자식 요소중 태그명 p인 요소 선택

- div + p : div의 형제 요소로 바로 다음에 나오는 요소 p인 요소 선택

- div ~ p : div의 형제 요소로 다음에 나오는 모든 요소 p인 요소 선택

- div:has(p) : 태그명이 p인 자손을 하나 이상 가지는 div 요소 선택

- div.code : 클래스명 code를 가지는 모든 div 요소 선택

- div#name : id가 name인 div 요소 선택

- div[A] : 속성 A를 가지는 모든 div 요소 선택

- div[A=B] : 값이 B인 A 속성 값을 가진 div 요소 선택

- div[A^=B] : 값이 B로 시작하는 값인 A 속성을 가진 div 요소 선택

- div[A$=V] : 값이 V로 끝나는 값인 A 속성을 가진 div 요소 선택

- div[A*=V] : 값에 V를 포함하는 값인 A 속성을 가진 div 요소 선택

선택자

- :animated : 움직이는 요소를 선택한다.

- :header() : <h1>, <h2>, <h3> 등 제목 요소를 선택한다.

- :input : input, textarea 모든 입력 컨트롤 선택

- :text : <input type="text"> 선택

- :button : <input type="button"> 선택

- :radio : <input type="radio"> 선택

- :checkbox : <input type="checkbox"> 선택

- :password : <input type="password"> 선택

- :file : <input type="file"> 선택

- :hidden : <input type="hidden"> 선택

- :image : <imput type="image"> 선택

- :submit : <input type="submit"> 선택

- :reset : <input type="reset"> 선택

- :selected : <select>의 <option selected> 를 선택한다.

- :checked : <input type="checkbox"> <input type="radio">의 체크된 요소를 선택한다.

- :contains() : 해당 인자를 가지고 있는 요소 선택  ; $('div:contains("text")') // div 요소중 "text"를 포함한 요소

- :visible : 눈에 보이는 요소 선택

- :enabled : 활성화된 요소 선택

- :disabled : 비활성화된 요소 선택

- :empty : 해당 요소가 비어있는 요소 선택 (text도 포함)

- :odd : 홀수 요소 선택

- :even :  짝수 요소 선택

- :parent : 부모요소 선택

- :first : 첫번째 요소 선택

- :first-child : 첫번째 자식요소 선택

- :last : 마지막 요소 선택

- :last-child : 마지막 자식요소 선택

- :nth-child() : 자식 요소 집합에서 인자의 위치한 자식을 선택 ; $('li:nth-child(1)') // <li>의 첫번째 자식요소를 찾는다. (index : 1, 2, 3)

- :eq() : 인자의 순번에 있는 요소를 선택 ; $('td:eq(2)") // td 집합중 세번째 요소를 선택 (index : 0, 1, 2)

- :only-child : 형제가 없는 요소를 선택

- :gt() : 인자보다 큰 요소 선택  ; $(":gt(index)") // index 값보다 큰 요소 선택

- :lt() : 인자보다 작은 요소 선택 ; $(":lt(index)") // index 값보다 작은 요소 선택

- :has() : 인자요소를 가지고 있는 요소를 선택 ; $('div:has(p)') // p를 자식으로 가지고 있는 div를 선택

- :not() : 인자의 조건이 아닌 요소를 선택 ; $(':not(div)') // div 가 아닌 요소를 선택

- :focus : focus 상태 요소 선택

2017년 8월 23일 수요일

jQuery.each()

jQuery.each()


Categories: Utilities
jQuery.each( array, callback )Returns: Object
Description: A generic iterator function, which can be used to seamlessly iterate over both objects and arrays.
Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index,
from 0 to length-1. Other objects are iterated via their named properties.

version added: 1.0jQuery.each( array, callback )
array
Type: Array
The array to iterate over.
callback
Type: Function( Integer indexInArray, Object value )
The function that will be executed on every object.
version added: 1.0jQuery.each( object, callback )
object
Type: Object
The object to iterate over.
callback
Type: Function( String propertyName, Object valueOfProperty )
The function that will be executed on every object.
The $.each() function is not the same as $(selector).each(), which is used to iterate, exclusively,
over a jQuery object. The  $.each() function can be used to iterate over any collection,
whether it is an object or an array. In the case of an array, the callback is passed an array index and
a corresponding array value each time. (The value can also be accessed through the this keyword,
but Javascript will always wrap the this value as an Object even if it is a simple string or number value.)
The method returns its first argument, the object that was iterated.

Note: The $.each() function internally retrieves and uses the length property of the passed collection.
So, if the collection has a property called length — e.g. {bar: 'foo', length: 10} —
the function might not work as expected.

$.each([ 52, 97 ], function( index, value ) {
  alert( index + ": " + value );
});
This produces two messages:

0: 52
1: 97

If an object is used as the collection, the callback is passed a key-value pair each time:

var obj = {
  "flammable": "inflammable",
  "duh": "no duh"
};
$.each( obj, function( key, value ) {
  alert( key + ": " + value );
});
Once again, this produces two messages:

flammable: inflammable
duh: no duh

We can break the $.each() loop at a particular iteration by making the callback function return false.
Returning non-false is the same as a continue statement in a for loop; it will skip immediately to the next iteration.

Examples:
Iterates through the array displaying each number as both a word and numeral

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.each demo</title>
  <style>
  div {
    color: blue;
  }
  div#five {
    color: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

<div id="one"></div>
<div id="two"></div>
<div id="three"></div>
<div id="four"></div>
<div id="five"></div>

<script>
var arr = [ "one", "two", "three", "four", "five" ];
var obj = { one: 1, two: 2, three: 3, four: 4, five: 5 };

jQuery.each( arr, function( i, val ) {
  $( "#" + val ).text( "Mine is " + val + "." );

  // Will stop running after "three"
  return ( val !== "three" );
});

jQuery.each( obj, function( i, val ) {
  $( "#" + i ).append( document.createTextNode( " - " + val ) );
});
</script>

</body>
</html>
Demo:


Iterates over items in an array, accessing both the current item and its index.


$.each( [ "a", "b", "c" ], function( i, l ){
  alert( "Index #" + i + ": " + l );
});
Iterates over the properties in an object, accessing both the current item and its key.

$.each({ name: "John", lang: "JS" }, function( k, v ) {
  alert( "Key: " + k + ", Value: " + v );
});