메뉴 건너뛰기

2018.10.27 03:38

jQuery 엘리먼트 선택

조회 수 1732 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

조작하려는 엘리먼트 선택하기

전 장에서도 간단히 살펴보았지만 우선 jQuery매소드를 사용하기 위해선 페이지에서 조작할 엘리먼트를 선택해야 한다. 여기선 이런 엘리먼트를 선택하는 방법에 대해 알아보자.
  • 기본 CSS 선택자를 이용해 선택하기
  • 위치로 선택하기
  • jQuery 정의 선택자로 선택하기
위의 세가지 방법을 이용해 엘리먼트를 선택하는 것에 대해 알아보자.

기본 CSS 선택자 사용하기

CSS를 사용해 본 유저라면 이 선택 기법은 익숙할 것이다.엘리먼트의 ID, CSS 클래스명, 태그명, 페이지 엘리먼트의 DOM 계층 구조를 이용해 엘리먼트를 선택하는 기법이 그것들이며 아래의 예를 보자.
  • a - 모든 링크 엘리먼트와 일치하는 선택자
  • #specialID - specialID를 아이디로 가지는 엘리먼트와 일치하는 선택자
  • .specialClass - specialClass를 클래스로 가지는 모든 엘리먼트와 일치하는 선택자
  • a#specialID.specialClass - 아이디가 specialID이고 specialClass를 클래스로 가지는 링크와 일치하는 선택자
  • p a.specialClass - 단락 엘리먼트 내에 선언되고 specialClass를 클래스로 가지는 모든 링크와 일치하는 선택자
이러한 기존의 CSS 선택자를 이용하여 엘리먼트를 선택할 수 있게 되는데, jQuery가 지원하는 선택자들은 아래와 같다.
선택자내 용
*모든 엘리먼트
E태그명이 E인 모든 엘리먼트
E FE의 자손이면서 태그명이 F인 모든 엘리먼트
E>FE의 바로 아래 자식이면서 태그명이 F인 모든 엘리먼트
E+FE의 형제 엘리먼트로 바로 다음에 나오는 엘리먼트 F
E~FE의 형제 엘리먼트로 다음에 나오는 모든 엘리먼트 F
E:has(F)태그명이 F인 자손을 하나 이상 가지는 태그명이 E인 모든 엘리먼트
E.C클래스명 C를 가지는 모든 엘리먼트 E
E#I아이디가 I인 엘리먼트 E
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
위의 선택자를 활용하는 방법에 대해 예제를 통해 알아보자.(예제보기)

위치로 선택하기

때로는 페이지에 있는 엘리먼트 위치나 다른 엘리먼트와 연관된 관계를 기반으로 엘리먼트를 선택해야 한다. 예를 들어 페이지에서 첫 번째 링크나 홀수 및 짝수 번째 문단 등을 선택하는 기법이 필요할 때가 있다. 이에 대해 정리한 것이 아래의 표이다.
선택자설 명
:first페이지에서 처음으로 일치하는 엘리먼트
:last페이제에서 마지막으로 일치하는 엘리먼트
:first-child첫 번째 자식 엘리먼트
:last-child마지막 자식 엘리먼트
:only-child형제가 없는 모든 엘리먼트를 반환
:nth-child(n)n번째 자식 엘리먼트
:nth-child(even|odd)짝수 혹은 홀수 자식 엘리먼트
:nth-child(Xn+Y)전달된 공식에 따른 n번째 자식 엘리먼트
:even / :odd페이지 전체의 짝수/홀수 엘리먼트
:eq(n)n번째로 일치하는 엘리먼트
:gt(n)n번째 엘리먼트 이후의 엘리먼트와 일치
:lt(n)n번째 엘리먼트 이전의 엘리먼트와 일치

jQuery 정의 선택자 사용하기

CSS 선택자를 이용해 우리는 원하는 DOM 엘리먼트를 선택할 수 있었지만 때로는 이것만으로 표현할 수 없는 특성이 있는 엘리먼트를 선택해야 한다. 예를 들어 라디어 버튼 중 check가 된 엘리먼트만을 선택하기에는 CSS선택자만으로는 부족하다. 이렇듯 부족한 부분을 jQuery 정의 선택자를 이용하여 채울 수 있다.
선택자설 명
:animated현재 애니메이션이 적용되고 있는 엘리먼트
:button모든 버튼을 선택
:checkbox체크박스 엘리먼트 선택
:checked선택된 체크박스나 라디오 버튼을 선택
:contains(foo)텍스트 foo를 포함하는 엘리먼트 선택
:disabled인터페이스에서 비활성화 상태인 모든 폼 엘리먼트를 선택
:enabled인터페이스에서 활성화 상태인 모든 폼 엘리먼트를 선택
:file모든 파일 엘리먼트를 선택
:header헤더 엘리먼트 선택
:hidden감춰진 엘리먼트 선택
:image폼 이미지를 선택
:input폼 엘리먼트만 선택
:not(filter)필터의 값을 반대로 변경
:parent빈 엘리먼트를 제외하고, 텍스트도 포함해서 자식 엘리먼트를 가지는 엘리먼트
:password패스워드 엘리먼트 선택
:radio라디오 버튼 엘리먼트 선택
:reset리셋 버튼을 선택
:selected선택된 엘리먼트 선택
:submit전송 버튼을 선택
:text텍스트 엘리먼트 선택
:visible보이는 엘리먼트 선택
여러 jQuery 정의 선택자가 폼과 관련되며 덕분에 특정 엘리먼트의 타입이나 상태를 세련되게 표현할 수 있다. 선택자 필터도 조합할 수 있다. 예를 들어 활성화 되고 선택된 체크박스만 일치시키려 한다면 다음과 같다.
 
 
:checkbox:checked:enabled

새로운 HTML 생성하기

jQuery() 함수는 페이지의 엘리먼트를 선택할 뿐 아니라 새로운 HTML을 생성할 수도 있다.
 
$("<div>안녕</div>")
이 표현식은 페이지에 추가할 새로운 <div> 엘리먼트를 생성한다. 다음의 코드를 이용하여 <div> 엘리먼트를 두 개 생성해보자.
 

$("<div class='foo'>내가 foo를 가졌다.</div><div>나는 foo를 가지지 않았다.")

.filter(".foo").click(function(){ alert("내가 foo이다."); })

.end().appendTo("#someParentDiv");

위의 코드는 <div> 엘리먼트를 생성하는데 첫번째 <div> 엘리먼트는 foo 클래스가 있고, 다른 하나에는 없다. 생성한 첫번째 <div> 엘리먼트를 클릭하면 alert()가 실행된다. 마지막으로 end()메서드를 이용해 필터링 이전의 두 <div>엘리먼트를 지닌 집합으로 돌아간 뒤, 이 집합을 id가 someParentDiv인 엘리먼트에 덧붙인다.



List of Articles
번호 제목 날짜 조회 수
247 'Array', 배열 및 다차원 배열 선언에 대해 알아보자! 2015.02.03 11110
246 'blur', 이미지 클릭시 테두리를 없애자! file 2015.02.03 7353
245 'button', 클릭한 횟수 알아내기! file 2015.02.03 10755
244 'checkbox', 체크박스 모두체크 그리고 모두해제! file 2015.02.03 7492
243 'focus', 엔터 누르고 이동하자! file 2015.02.03 12857
242 'onmouseover', 마우스 오버 효과 - 글씨 바꾸기! file 2015.02.03 9433
241 'open', 새창을 열어보자! file 2015.02.03 6036
240 'opener', 부모창과 자식창의 텍스트를 교환하자! file 2015.02.03 7308
239 'setInterval', 타이머를 사용하자! ==setTimeout 2015.02.03 6223
238 'setTimeout', 타이머를 사용하자! file 2015.02.03 7033
237 '레이블', 반복문을 제어하자! file 2015.02.03 5540
236 '문자 ↔ 숫자', 타입을 바꿔보자! 2015.02.03 6207
235 (소스)jqury 롤오버 버튼 쉽게 만들기 file 2014.03.01 5784
234 2단계 트리메뉴 마우스오버(mouseover), 온포커스(onfocus) 구현 2015.04.06 8203
233 3자리 마다 쉼표만 찍어주는 number_format 함수 2021.03.26 225
232 3자리마다 콤마찍기 2014.02.27 5755
231 5초 후에 해당페이지로 url 옮기기 2014.02.27 10485
230 5초후 자동으로 창닫기 2015.02.03 9034
229 == / === / != / !== 차이 2018.11.07 1443
228 ajax 사용시 Internal Sever Error 뜨는 경우 2021.03.26 958
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved