외규장각 도서 환수 모금 캠페인

2

Interesting/jQuery 2012. 4. 19. 09:58

1. 컨텍스트 선택

전체선택 : $(selector)

특정 DOM 선택 : $(selector, 'div#sampleDOM')


jQuery를 이용해 엘리먼트를 선택하려면 셀렉터를 $()로 감싸줘야 함

ex) $("p a.specialClass")


 예제 

 설명 

 a 

 모든 앵커(<a>) 엘리멘트와 일치 

 #specialID 

 specialID를 id로 가진 엘리먼트와 일치 

 .specialClass

 specialClass를 클래스명으로 가진 모든 엘리먼트와 일치

 a#specialID.specialClass 

 앵커 태그에 specialClass를 클래스명으로 가지면서 specialID를 id로 가진 엘리먼트와 일치

 p a.specialClass 

 <p> 엘리먼트의 자손들 중에 specialClass를 클래스명으로 가진 모든 앵커 엘리먼트와 일치

< 간단한 몇 개의 CSS 셀렉터 예제 >


콤마 연산자를 사용해서 하나의 표현식에 여러 개의 셀렉터를 조합하여 사용 가능

&('div, span') : 모든 <div> 엘리먼트와 <span> 엘리먼트 선택


ul.myList li a

: ul 엘리먼트의 myList 클래스 밑에 li 밑에 모든 a 엘리먼트


p > a

: p 엘리먼트 바로 다음의 a 엘리먼트


a[href^=http://]

: href의 값이 정확히 http://로 시작하는 모든 링크와 일치하는 엘리먼트


form[method]

: 이 셀렉터는 명시적으로 method 어트리뷰터를 가지는 <form> 엘리먼트와 일치


input[type=text]

: type이 text인 모든 input 엘리먼트


div[title^= my]

title 어트리뷰트의 값이 my로 시작하는 모든 <div> 엘리먼트


a[href$=.pdf]

: pdf 파일을 참조하는 모든 링크를 찾아오는 셀렉터


a[href*=jquery.com]

: jQuery 사이트를 참조하는 모든 <a> 엘리먼트


2. CSS와  jQuery 정의 필터 셀렉터 사용

 예제

 설명 

 * 

 모든 엘리먼트와 일치

 E 

 태그명이 E인 모든 엘리먼트와 일치

 E F 

 E의 자손이면서 태그명이 F인 모든 엘리먼트

 E>F 

 E의 바로 아래 자식이면서 태그명이  F인 모든 엘리먼트와 일치 

 E+F  

 E의 형제 엘리먼트로 바로 다음에 나오는 엘리먼트 F와 일치 

 E~F 

 E의 형제 엘리먼트로 다음에 나오는 모든 엘리먼트 F와 일치

 E.C 

 클래스명 C를 가지는 모든 엘리먼트 E와 일치. E의 생략은 *.C와 동일함 

 E#I 

 아이디가 I인 엘리먼트 E와 일치. E의 생략은 *#I와 동일함 

 E[A] 

 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치 

 E[A=V] 

 값이 V인 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치 

 E[A^=V] 

 값이 V로 시작하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치 

 E[A$=V] 

 값이 V로 끝나는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치

 E[A!=V] 

 값이 아예 없거나 값이 V가 아닌 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치 

 E[A*=V] 

 값에 V를 포함하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치 

jQuery에서 지원하는 기본 CSS 셀렉터


 셀렉터

 설명 

 :first 

 컨텍스트에서 처음 일치하는 엘리먼트와 일치. li a:first는 리스트 아이템의 자손 중 첫 번째 링크를 반환 

 :last 

 컨텍스트에서 마지막으로 일치하는 엘리먼트와 일치. li a:last는 리스트 아이템의 자손 중 마지막 링크를 반환 

 :first-child 

 컨텍스트에서 첫 번째 자식 엘리먼트와 일치. li:first-child는 각 리스트의 첫 번째 리스트 아이템을 반환 

 :last-child 

 컨텍스트에서 마지막 자식 엘리먼트와 일치. li:last-child는 각 리스트의 마지막 리스트 아이템을 반환 

 :only-child

 형제가 없는 모든 엘리먼트를 반환 

 :nth-child(n) 

 컨텍스트에서 n번째 자식 엘리먼트와 일치. li:nth-child(2)는 각 리스트의 두 번째 리스트 아이템을 반환 

 :nth-child(even|odd) 

 컨텍스트에서 짝수 또는 홀수 자식 엘리먼트와 일치. li:nth-child(even)은 각 리스트의 짝수 번째 리스트 아이템을 반환 

 :nth-child(Xn+Y)

 전달된 공식에 따른 n번째 자식 엘리먼트와 일치. Y가 0인 경우 생략 가능. li:nth-child(3n)은 3의 배수인 리스트 아이템을 반환한다. li:nth-child(5n+1)은 5의 배수 +1번째 리스트 아이템을 반환 

 :even 

 컨텍스트에서 짝수 번째 엘리먼트와 일치. li:even은 모든 짝수 번째 리스트 아이템을 반환 

 :odd 

 컨텍스트에서 홀수 번째 엘리먼트와 일치. li:odd는 모든 홀수 번째 리스트 아이템을 반환 

 :eq(n) 

 n번째로 일치하는 엘리먼트와 일치 

 :gt(n) 

 n번째 엘리먼트를 포함하지 않은 이후의 엘리먼트와 일치 

 :lt(n) 

 n번째 엘리먼트를 포함하지 않은 이전의 엘리먼트와 일치 

jQuery가 지원하는 위치 기반 필터 셀렉터

 

 셀렉터 

 설명 

 CSS 지원 

 :animated 

 현재 애니메이션이 적용되고 있는 엘리먼트를 선택

 

 :button 

 버튼 엘리먼트만 선택
 input[type=submit], input[type=reset], input[type=button], button 

 

 :checkbox 

 체크박스 엘리먼트만 선택
 input[type=checkbox] 

 

 :checked 

 선택된 체크박스 또는 라디오 버튼만 선택 

 O 

 :contains(food) 

 텍스트 food를 포함하는 엘리먼트만 선택 

 

 :disabled 

 비활성화 상태인 엘리먼트만 선택  

 O 

 :enabled 

 활성화 상태인 엘리먼트만 선택 

 O 

 :file 

 파일 타입 엘리먼트만 선택
 input[type=file] 

 

 :has(selector) 

 셀렉터와 일치한 최소 한 개 이상의 엘리먼트를 포함하는 엘리먼트만 선택 

 

 :header 

 헤더 엘리먼트만 선택
 예를 들어 <h1>에서 <h6>까지의 엘리먼트 선택 

 

 :hidden 

 감춰진 엘리먼트만 선택 

 

 :image 

 이미지 타입의 엘리먼트만 선택
 input[type=image] 

 

 :input

 폼 엘리먼트만 선택

 input, select, textarea, button 

 

 :not(selector) 

 셀렉터의 값을 반대로 변경

 img:not([src*="dog"])

 O 

 :has(selector)

 자손 엘리먼트를 포함한 조상 엘리먼트를 선택

 div:has(span)  

 O 

 :parent 

 빈 엘리먼트를 제외하고, 텍스트도 포함해서 자식 엘리먼트를 가지는 엘리먼트 선택 

 

 :password 

 패스워드 엘리먼트만 선택
 input[type=password] 

 

 :radio 

 라디오 엘리먼트만 선택
 input[type=radio] 

 

 :reset 

 리셋 버튼만 선택
 input[type=reset], button[type=reset] 

 

 :selected 

 선택된 상태의 옵션(<option>) 엘리먼트만 선택 

 

 :submit 

 전송 버튼만 선택
 button[type=submit], input[type=submit] 

 

 :text 

 텍스트 타입 엘리먼트만 선택
 input[type=text] 

 

 :visible 

 보이는(visible) 엘리먼트만 선택 

 

CSS와 jQuery 정의 필터 셀렉터

3. 새로운 HTML 생성

<example>

$("<div>Hello</div>")

$('<img>',

{

src : 'xxx.png'.

alt : 'string',

title : 'title',

click : function() {

// implementation

)}

}

)


4. 확장된 엘리먼트 집합 관리

  1. 확장집합의 크기 결정
    • $('a').size()
    • 확장 집합된 엘리먼트 개수 반환
    • 매개변수 : 없음
    • 반환 값 : 엘리먼트 개수
  2. 확장 집합에서 엘리먼트 획득
    • var imgElement = $('img[alt'])[0] / var imgElement = $('img[alt]).get(0)
    • get(index)
    • 확장 집합에서 하나 또는 모든 일치하는 엘리먼트 가져옴. 매개변수가 명시되지 않았다면 확장 집합에서 모든 엘리먼트를 자바스크립트 배열로 반환, index 매개변수가 주어진다면 해당 인덱스의 엘리먼트 반환
    • 매개변수 : index(number) 얻으려는 엘리먼트 인덱스, 생락하면 전체 집합 배열로 반환
    • 반환 값 : 하나의 DOM 엘리먼트 또는 DOM 엘리먼트 집합

    • eq(index)
    • 확장 집합에서 index에 맞는 엘리먼트를 가져오고 해당 엘리먼트를 포함한 새로운 확장 집합 반환
    • 매개변수 : index(number) 얻으려는 엘리먼트의 인덱스. get() 메서드처럼, 생략하면 전체 집합 배열로 반환
    • 반환 값 : 하나 또는 빈 엘리먼트 포함한 확장 집합

    • first()
    • 확장 집합에서 첫 번째 엘리먼트를 가져오고 해당 엘리먼트를 포함한 새로운 확장 집합을 반환. 만약 확장 집합이 비어있다면 빈 확장 집합이 반환
    • 매개변수 : 없음
    • 반환 값 : 하나 또는 빈 엘리먼트를 포함한 확장 집합

    • last()
    • 확장 집합에서 마지막 엘리먼트를 가져오고 해당 엘리먼트를 포함한 새로운 확장 집합 반환. 만약 확장 집합이 비어있다면 빈 확장 집합 반환

    • var allLabeledButtons = $('label+button').toArray();
    • toArray()
    • 확장 집합의 DOM 엘리먼트의 배열 반환
    • 매개변수 : 없음
    • 반환 값 : 확장 집합에 있는 DOM 엘리먼트의 자바스크립트 배열

    • var n = $('img').index('img#id');
    • index(element)
    • 확장 집합에서 전달된 엘리먼트를 찾고, 집합에서 찾은 엘리먼트의 인덱스를 반환. 또느 확장 집합의 첫 번째 엘리먼트의 인덱스를 찾는다. 집합에 해당 엘리먼트가 존재하지 않으면 -1 반환
    • 매개변수 : element(Elelement | Selector) 순서 번호를 알고자 하는 엘리먼트의 참조, 또는 엘리먼트를 식별할 셀렉터. 생략하면 확장 집합에 있는 형제 엘리먼트 중에서 첫 번째 엘리먼트를 찾는다.
    • 반환 값 : 확장 또는 확장 집합의 형제들에게 전달된 엘리먼트의 순서 번호, 발견되지 않으면 -1
  3. 확장 엘리먼트 집합 재편성
    • $('img[alt]').add('img[title]')
    • add(expression, context)
    • 확장 집합의 복사본을 생성하고 expression 매개변수로 명시한 엘리먼트를 확장 집합에 추가. 표현식에는 셀렉터, HTML 코드, DOM 엘리먼트, DOM 엘리먼트의 배열
    • 매개변수 : 
      1. expression(Selector | Element | Array) 확장 집합에 추가될 대상 명시. jQuery 셀렉터도 매개변수가 될 수 있음. 이 경우 셀렉터에 일치하는 엘리먼트가 집합에 추가됨. 매개변수로 HTML코드가 전달되면 적합한 엘리먼트가 생성되어 집합에 추가됨. 매개변수가 DOM 엘리먼트나 DOM 엘리먼트의 배열인 경우 집합에 추가
      2. context (Selector | Element | Array | jQuery) 첫 번째 매개변수와 일치하는 엘리먼트를 찾는 범위를 제한하는 컨텍스트를 명시. 이것은 jQuery 함수에 전달되는 컨텍스트와 동일
    • 반환 값 : 추가된 엘리먼트가 포함된 원본 집합의 복사본
    • $('img[title]').not('[title*=puppy]')
    • $('img').not(function() { return !$(this).hasClass('test'); })
    • not(expression)
    • 확장 집합의 복사본을 생성하고 표현식 매개변수의 값에 따라서 일치하는 엘리먼트를 새로운 집합에서 제거
    • 매개변수 : expression (Selector | Element | Array | Function) 제거할 아이템 명시. 매개변수가 jQuery 셀렉터라면 일치하는 모든 엘리먼트를 제거. 엘리먼트 참조 또는 엘리먼트 배열이 전달되면 집합에서 해당 엘리먼트를 제거. 함수가 전달되면 확장 집합의 아이템마다 함수가 실행(아이템이 this에 할당)되고 확장 집합에서 제거된 아이템이 있을 때 true를 반환
    • 반환 값 : 제거된 엘리먼트가 포함되지 않은 원본 집합의 복사본
    • $('td').filter(function() { return this.innerHTML.match(/^\d+$) } );
    • filter(expression)
    • 확장 집합의 복사본을 생성하고 표현식 매개변수의 값에 따라서 일치하지 않는 엘리먼트를 새로운 집합에서 제거
    • 매개변수 : expression (Selector | Element | Array | Function) 제거할 아이템 명시. 매개변수가 jQuery 셀렉터라면 일치하지 않는 모든 엘리먼트를 제거. 엘리먼트 참조 또는 엘리먼트 배열이 전달되면 집합에서 모든 엘리먼트 제거. 함수가 전달되면 확장 집합의 아이템마다 함수가 실행(아이템이 this에 할당)되고 확장 집합에서 제거된 아이템이 있을 때 false를 반환
    • 반환 값 : 필터링된 엘리먼트가 포함되지 않은 원본 집합의 복사본
    • $('*').slice(2,3)
    • slice(begin, end)
    • 매개변수
      begin (Number) 반환되는 부분 집합에 포함될 첫 엘리먼트의 위치로 0부터 시작
      end (Number) 반환되는 부분 집합에 포함될 마지막 엘리먼트의 바로 다음 위치로, 0부터 시작. 생략하면 집합의 마지막까지 포함
    • $('div').has('img[alt]')
    • has(test)
    • 원본 확장 집합에서 전달된 test 표현식과 일치하는 자손을 가진 엘리먼트를 포함한 새로운 확장 집합 생성 반환
    • 매개변수 : test (Selector | Element) 확장 집합의 모든 자손에 적용될 셀렉터 또는 검사될 엘리먼트. 셀렉터 혹은 전달된 엘리먼트와 일치하는 엘리먼트를 가진 엘리먼트만이 반환된 확장 집합에 포함
    • 반환 값 : 검사 결과로 생성된 확장된 집합
    • var allIds = $('div').map(function() {
          return (this.id == undefined) ? null : this.id;
      }).get();
    • map(callback)
    • 확장 집합의 엘리먼트를 순회하면서 콜백 함수를 실행하고 jQuery 객체 인스턴스 내 반환된 값을 모음
    • 매개변수 : callback(Function) 확장 집합의 엘리먼트를 순회하면서 실행할 콜백 함수. 콜백 함수에 두 개의 매개변수가 전달된다 첫 번째는 0부터 시작하는 집합의 엘리먼트 인덱스이고 두 번째는 엘리먼트 자신. 엘리먼트는 또한 함수 컨텍스트로 설됭(this 키워드)
    • 반환 값 : 변환된 값을 가진 확장 집합
    • $('img').each(function() {
          this.alt='image['+n'] 의 id는 '+this.i' 이다';
      });
    • $([1,2,3]).each(function() { alert9this); });
    • each(iterator)
    • 전달된 iterator 함수가 확장 집합의 모든 엘리먼트를 순회하면서 실행
    • 매개변수 : iterator(Function) 일치된 집합의 각 엘리먼트마다 호출되는 함수. 함수에 두 개의 매개변수가 전달. 첫 번째는 0부터 시작하는 집합의 엘리먼트 인덱스 번호이고, 두 번째는 엘리먼트 자신. 엘리먼트는 또한 함수 컨텍스트로 설정
    • 반환 값 : 확장 집합
  4. 관계를 이용해 확장 집합 얻기

     메서드

     설명 

     children([selector]) 

     확장 엘리먼트의 고유한자식으로 구성된 확장 집합을 반환

     closet([selector]) 

     존재할 경우, 전달된 표현식과 일치하는 가장 가까운 조상 하나로 구성된 확장 집합 반환 

     contents() 

     확장 집합에서 엘리먼트의 컨텐츠로 구성된 확장 집합 반환. 여기에는 텍스트 노드도 포함되며 주로 <iframe> 엘리먼트의 컨텐츠를 얻고자 사용 

     next([selector])  

     확장 집합의 각 확장 엘리먼트 다음에 나오는 형제로 구성된 확장 집합 반환

     nextAll([selector]) 

     확장 집합의 각 확장 엘리먼트 다음에 나오는 모든 형제로 구성된 학장 집합 반환 

     nextUntil([selector]) 

     확장 집합의 각 확장 엘리먼트 다음에 나오는 모든 형제부터 셀렉터와 일치하는 엘리먼트 전까지의 확장 집합을 반환. 셀렉터와 일치하는 엘리먼트가 없거나 셀렉터가 생략되면 모든 형제 엘리먼트가 선택 

     offsetParent() 

     확장 집합에 상대 혹은 절대적으로 가장 가까운 위치한 첫 번째 엘리먼트의 부모로 구성된 확장 집합 반환 

     parent([selector]) 

     확장 집합에 있는 모든 확장 엘리먼트의 바로 위 부모로 구성된 확장 집합 반환 

     parents([selector]) 

     모든 확장 엘리먼트의 조상으로 구성된 확장 집합 반환. 바로 위 부모와 상위의 모든 조상이 포함되지만 문서 루트(document root)는 포함되지 않음 

     parentsUntil([selector]) 

     확장 집합에 있는 엘리먼트의 모든 조상부터 셀렉터와 일치하는 엘리먼트 전까지의 확장 집합을 반환. 셀렉터와 일치하는 엘리먼트가 없거나 셀렉터가 생략되면 모든 조상 엘리먼트 선택 

     prev([selector]) 

     확장 집합의 각 확장 엘리먼트 바로 이전에 나오는 형제로 구성된 확장 집합 반환 

     prevAll([selector]) 

     확장 집합의 각 확장 엘리먼트 이전에 나오는 모든 형제로 구성돤 확장 집합 반환 

     prevUntil([selector]) 

     확장 집합 내에 있는 엘리먼트의 모든 이전 형제부터 셀렉터와 일치하는 엘리먼트 전까지의 확장 집합 반환. 셀렉터와 일치하는 엘리먼트가 없거나 셀렉터가 생략되면 모든 이전 형제 엘리먼트들이 선택 

     siblings([selector]) 

     확장 엘리먼트의 모든 형제를 포함하는 확장 집합을 반환 

    다른 HTML DOM 엘리먼트의 관계를 통해 새로운 확장 집합을 얻을 수 있는 메서드

  5. 확장 집합을 이용하는 기타 방법

    • wrappedSet.find('p cite')

    • find(selector)

    • 원본 엘리먼트의 모든 자손 엘리먼트 중 전달된 셀렉터 표현식과 일치하는 엘리먼트로 구성된 새로운 확장 집합 반환

    • 매개변수 : selector (String) 반환될 집합의 일부가 될 엘리먼트가 일치하는 셀렉터

    • 반환 값 : 새로 생성된 확장 집합 

    • var hasImage = $('*').is('img')

    • is(selector)

    • 확장 집합에 전달된 셀렉터 표현식과 일치하는 엘리먼트가 있는지 확인

    • 매개변수 : selector (String) 확장 집합 엘리먼트를 평가할 셀렉터 표현식

    • 반환 값 : 전달된 셀렉터에 하나라도 일치하면 true, 그렇지 않으면 false

  6. jQuery 체인 관리하기

    • andSelf()

    • 매서드 체인에서 이전 확장 집합 두 개를 하나로 합침

    • 매개변수 : 없음

    • 반환 값 : 합쳐진 확장 집합



Posted by 닉네임영역
,


사랑합니다. 편안히 잠드소서