jQuery event
jQuery 기본적인 문법들과 jQuery의 event들에 대해서!
선택자
기본 선택자
직접 선택자
- 전체 선택자:
$(*)
: 모든 요소를 선택한다 - 아이디 선택자:
$("#아이디명")
: id 속성에 지정한 값을 가진 요소를 선택한다 - 클래스 선택자:
$(".클래스명")
: class 속성에 지정한 값을 가진 요소를 선택한다 - 요소 선택자:
$("요소명")
: 지정한 요소명과 일치하는 요소들만 선택한다. - 그룹 선택자:
$("선택1, 선택2, 선택3, ... 선택 n")
: 선택1, 선택2, 선택3, … 선택n에 지정된 요소들을 한 번에 선택한다. - 종속 선택자:
$("p.txt_1")
$("p#txt_1")
: <p> 요소 중 class값이 txt_1인 요소 또는 id값이 txt_1인 요소를 선택한다.
인접 관계 선택자
- 부모 요소 선택자:
$("요소 선택").parent()
: 선택한 요소의 부모 요소를 선택한다. - 상위 요소 선택자:
$("요소 선택").parents()
: 선택한 요소의 상위 요소를 모두 선택한다. - 가장 가까운 상위 요소 선택자:
$("요소 선택").closet("div")
: 선택한 요소의 상위 요소 중 가장 가까운 <div>만 선택한다. - 하위 요소 선택자:
$("요소 선택 하위 요소")
: 선택한 요소에 지정한 하위 요소를 선택한다. - 자식 요소 선택자:
$("요소 선택>자식 요소")
: 선택한 요소를 기준으로 자식 관계에 지정한 요소만 선택한다. - 자식 요소들 선택자:
$("요소 선택").children()
: 선택한 요소의 모든 자식 요소를 선택한다. - 형(이전) 요소 선택자:
$("요소 선택").prev()
: 선택한 요소의 바로 이전 요소를 선택한다. - 형(이전) 요소들 선택자:
$("요소 선택").prevAll()
: 선택한 요소의 이전 요소 모두를 선택한다. - 지정 형(이전) 요소들 선택자:
$("요소 선택").prevUntil("요소명")
: 선택한 요소의 다음 요소를 선택한다. - 동생(다음) 요소 선택자:
$("요소 선택").next()
$("요소 선택 + 다음 요소")
: 선택한 요소의 다음 요소를 선택한다. - 동생(다음) 요소들 선택자:
$("요소 선택).nextAll()
: 선택한 요소의 다음 요소 모두를 선택한다. - 지정 동생(다음) 요소들 선택자:
$("요소 선택).nextUntil("h2")
: 선택한 요소부터 지정한 요소의 다음 요소까지 모두 선택한다. - 전체 형제 요소 선택자:
$(".box_1").siblings()
: class 값이 box_1인 요소의 형제 요소 전체를 선택한다.
속성 탐색 선택자
$("요소 선택[속성]")
:$("li[title]")
-<li>
요소 중 title 속성이 포함된 요소만 선택한다.$("요소 선택[속성=값]")
:$("li[title='리스트']")
-<li>
요소 중 title 속성값이 ‘리스트’인 요소만 선택한다.$("요소 선택[속성^=텍스트]")
:$("a[href^='http://']")
-<li>
요소 중 href 속성값이 ‘http://’로 시작하는 요소 만 선택한다.$("요소 선택[속성$=텍스트]")
:$("a[href$='.com']")
-<li>
요소 중 href 속성값이 ‘.com’으로 끝나는 요소 만 선택한다.$("요소 선택[href*=텍스트]")
:$("a[href*='easyspub']")
-<li>
요소 중 href 속성값중에서 ‘easyspub’을 포함하는 요소만 선택한다.$("요소 선택:hidden")
:$("li:hidden")
-<li>
요소 중 숨겨져 있는 요소만 선택한다.$("요소 선택:visible")
:$("li:visible")
-<li>
요소 중 보이는 요소만 선택한다.$(".text")
:$(".text")
-<input>
요소 중 type 속성값이 “text”인 요소만 선택한다.$(".selected")
:$(".selected")
- selected 속성이 적용된 요소만 선택한다.$(".checked")
:$(".checked")
- checked 속성이 적용된 요소만 선택한다.
jQuery event
이벤트 등록 메서드
이벤트란 사이트에서 방문자가 취하는 모든 행위를 말하고, 이벤트 핸들러는 이벤트가 발생했을 때 실행되는 코드를 말한다. 이 메서드를 이용하면 방문자가 지정한 요소에서 어떠한 특정 동작이 일어났을 때 저장된 코드를 실행시킬 수 있다.
이벤트 등록 메서드에는 하나의 이벤트만 등록할 수 있는 단독 이벤트 등록 메서드와 2개 이상의 이벤트를 등록할 수 있는 그룹 이벤트 등록 메서드가 있다. 단독 이벤트 메서드는 한 동작에 대한 이벤트를 등록할 때 사용하는 메서드이다.
이벤트 등록 메서드의 종류
- 로딩이벤트
- load() : 선택한 이미지 또는 프레임 요소에 연동된 소스의 로딩이 완료된 후 이벤트가 발생한다.
- ready() : 지정한 HTML 문서 객체의 로딩이 완료된 후 이벤트가 발생한다.
- error() : 이벤트 대상 요소에서 오류가 발생하면 이벤트가 발생한다.
- 마우스이벤트
- click() : 선택한 요소를 클릭했을 때 이벤트가 발생한다.
- dbclick() : 선택한 요소를 연속해서 두 번 클릭했을 때 이벤트가 발생한다.
- mouseout() : 선택한 요소의 영역에서 마우스 포인터가 벗어났을 때 이벤트가 발생한다. 이때 하위 요소의 영향을 받는다.
- mouseover() : 선택한 요소의 영역에 마우스 포인터를 올렸을 때 이벤트가 발생한다.
- hover() : 선택한 요소에 마우스 포인터를 올렸을 때와 벗어났을 때 각각 이벤트가 발생한다.
- mousedown() : 선택한 요소에서 마우스 버튼을 눌렀을 때 이벤트가 발생한다.
- mouseup() : 선택한 요소에서 마우스 버튼을 눌렀다 떼었을 때 이벤트가 발생한다.
- mouseenter() : 선택한 요소 범위에 마우스 포인터를 올렸을 때 이벤트가 발생한다.
- mouseleave() : 선택한 요소 범위에서 마우스 포인터가 벗어났을 때 이벤트가 발생한다.
- mousemove() : 선택한 요소 범위에서 마우스 포인터를 움직였을 때 이벤트가 발생한다.
- scroll() : 가로, 세로 스크롤바를 움직일 때마다 이벤트가 발생한다.
- 포커스이벤트
- focus() : 선택한 요소에 포커스가 생성되었을 때 이벤트를 발생하거나 선택한 요소에 강제로 포커스를 생성한다.
- focusin() : 선택한 요소에 포커스가 생성되었을 때 이벤트가 발생한다.
- focusout() : 포커스가 선택한 요소에서 다른 요소로 이동되었을 때 이벤트가 발생한다.
- blur() : 포커스가 선택한 요소에서 다른 요소로 이동되었을 때 이벤트가 발생하거나 선택한 요소의 포커스가 강제로 사라지도록 한다.
- change() : 이벤트 대상인 입력 요소의 값이 변경되고, 포커스가 이동하면 이벤트가 발생한다. 그리고 강제로 change 이벤트를 발생시킬때도 사용한다.
- 키보드이벤트
- keypress() : 선택한 요소에서 키보드를 눌렀을 때 이벤트가 발생한다. 그리고 문자 키를 제외한 키의 코드값을 반환한다.
- keydown() : 선택한 요소에서 키보드를 눌렀을 때 이벤트가 발생한다. 키보드의 모든 키의 코드값을 반환한다.
- keyup() : 선택한 요소에서 키보드에서 손을 떼었을 때 이벤트가 발생한다.
이벤트 등록 방식 알아보기
- 단독이벤트 단독 이벤트 등록 메서드는 대상에 한 가지 동작에 대한 이벤트만 등록할 수 있다.
$("이벤트 대상 선택").이벤트 등록 메서드(function(){
자바스크립트 코드;
});
<button id="btn1">버튼</button>
$("#btn1").click(function(){
alert("welcome");
});
- 그룹이벤트 그룹 이벤트 등록 메서드는 대상에 한 가지 동작 이상의 이벤트를 등록할 수 있다. on() 메서드를 사용하여 이벤트를 등록한다.
1. on() 메서드 등록 방식1
$("이벤트 대상 선택").on("이벤트 종류1 이벤트 종류2 ... 이벤트 종류n",
function(){
자바스크립트코드;
});
2. on() 메서드 등록 방식2
$("이벤트 대상 선택").on({
"이벤트 종류1 이벤트 종류2 ... 이벤트 종류n" : function() {
자바스크립트 코드;
}
});
3. on() 메서드 등록 방식3
$("이벤트 대상 선택").on({
"이벤트 종류1" : function(){ 자바스크립트 코드; 1 },
"이벤트 종류2" : function(){ 자바스크립트 코드; 2 },
"이벤트 종류3" : function(){ 자바스크립트 코드; 3 },
....
"이벤트 종류n" : function(){ 자바스크립트 코드; n },
- on() 메서드 등록 방식1
$("#btn1").on("mouseover focus", function(){
console.log("welcome");
})
- on() 메서드 등록 방식1
$("#btn1").on({
"mouseover focus" : function(){
console.log("welcome");
}
});
- on() 메서드 등록 방식1
$("#btn1").on({
"mouseover" : function(){
console.log("welcome");
},
"focus" : function(){
console.log("welcome");
}
});
이벤트 객체와 종류
$("이벤트 대상 선택").mousemove(function(매개변수){
매개변수(이벤트 객체).속성;
});
- 마우스 이벤트
- clientX : 마우스 포인터의 X 좌푯값 반환(스크롤 이동 거리 무시)
- clientY : 마우스 포인터의 Y 좌푯값 반환(스크롤 이동 거리 무시)
- pageX : 스크롤 X축의 이동한 거리를 계산하여 마우스 포인터의 X 좌푯값을 반환
- pageY : 스크롤 Y축의 이동한 거리를 계산하여 마우스 포인터의 Y 좌푯값을 반환
- screenX : 화면 모니터를 기준으로 마우스 포인터의 X 좌푯값을 반환
- screenY : 화면 모니터를 기준으로 마우스 포인터의 Y 좌푯값을 반환
- layerX : position을 적용한 요소를 기준으로 마우스 포인터의 X 좌푯값을 반환
- layerY : position을 적용한 요소를 기준으로 마우스 포인터의 Y 좌푯값을 반환
- button : 마우스 버튼의 종류에 따라 값을 반환 (왼쪽: 0, 휠: 1, 오른쪽:2)
- 키보드 이벤트
- keyCode : 키보드의 아스키 코드값을 반환
- altKey : 이벤트 발생 시 Alt 키가 눌렸으면 true를, 아니면 false를 반환
- ctrlKey : 이벤트 발생 시 Ctrl 키가 눌렸으면 true를, 아니면 false를 반환
- shiftKey : 이벤트 발생 시 Shift 키가 눌렸으면 true를, 아니면 false를 반환
- 전체 이벤트
- target : 이벤트가 전파된 마지막 요소를 가리킨다.
- cancelBubble : 이벤트의 전파를 차단하는 속성으로, 기본값은 false며, true로 설정하면 전파가 차단된다.
- stopPropagation() : 이벤트의 전파를 차단한다.
- preventDefault() : 기본 이벤트를 차단한다. 예를 들어
<a>
에 클릭 이벤트를 적용하고 사용자가 이벤트를 발생시키면 기본 이벤트가 등록되어 있어 링크 주소로 이동하는데, 이런 기본 이벤트를 차단할 수 있다.
scroll() 이벤트 메서드
scroll() 이벤트 메서드는 대상 요소의 스크롤바가 이동할 때마다 이벤트를 발생시키거나 강제로 scroll이벤트를 발생시키는 데 사용한다.
1. scroll 이벤트 등록
$("이벤트 대상 선택").scroll(function() { 자바스크립트 코드; });
$("이벤트 대상 선택").on("scroll", function() { 자바스크립트 코드; });
2. scroll 이벤트 강제 발생
$("이벤트 대상 선택").scroll();
포커스 이벤트
포커스는 마우스로 <a>
또는 <input>
태그를 클릭하거나 Tab 를 누르면 생성된다.
focus()/blur()/focusin()/focusout() 이벤트 메서드
- focus() : 대상 요소로 포커스가 이동하면 이벤트를 발생시킨다.
- blur() : 포커스가 대상 요소에서 다른 요소로 이동하면 이벤트를 발생시킨다.
1. focus 이벤트 등록
$("이벤트 대상 선택").focus(function() { 자바스크립트 코드; });
$("이벤트 대상 선택").on("focus", function() { 자바스크립트 코드; });
2. focus 이벤트 강제 발생
$("이벤트 대상 선택").focus();
3. blur 이벤트 등록
$("이벤트 대상 선택").blur(function() { 자바스크립트 코드; });
$("이벤트 대상 선택").on("blur", function() { 자바스크립트 코드; });
4. blur 이벤트 강제 발생
$("이벤트 대상 선택").blur();
- focusin() : 대상 요소의 하위 요소 중 입력 요소로 포커스가 이동하면 이벤트를 발생시킨다.
- focusout() : 대상 요소의 하위 요소 중 입력 요소에서 외부 요소로 이동하면 이벤트를 발생시킨다.
1. focusin 이벤트 등록
$("이벤트 대상 선택").focusin(function() { 자바스크립트 코드; });
$("이벤트 대상 선택").on("focusin", function() { 자바스크립트 코드; });
2. focusin 이벤트 강제 발생
$("이벤트 대상 선택").focusin();
3. focusout 이벤트 등록
$("이벤트 대상 선택").focusout(function() { 자바스크립트 코드; });
$("이벤트 대상 선택").on("focusout", function() { 자바스크립트 코드; });
4. focusout 이벤트 강제 발생
$("이벤트 대상 선택").focusout();
키보드로 마우스 이벤트 대응하기
키보드 접근성이란 어떤 대상 요소에 마우스 이벤트를 등록했을 때 마우스 없이 키보드로 대상 요소를 사용할 수 있게 하는 것을 말한다.
마우스 이벤트에 대한 키보드 대응 이벤트
마우스 이벤트 : 키보드 이벤트
mouseover : focus
mouseout : blur
1. 키보드 접근성을 배려하지 않은 이벤트 예 (비추천)
<button class="btn">버튼</button>
<p class="txt_1">내용1</p>
$(".btn").mouseover(function(){
$(".txt_1").hide();
});
3. 키보드 접근성을 배려한 이벤트 예 (추천)
<button class="btn">버튼</button>
<p class="txt_1">내용1</p>
$(".btn").on("mouseover focus", function(){
$(".txt_1").hide();
});
change() 이벤트 메서드
change() 이벤트 메서드는 선택한 폼 요소의 값(value)을 새 값으로 바꾼다. 그리고 포커스가 다른 요소로 이동하면 이벤트를 발생시킨다.
1. focus 이벤트 등록
$("이벤트 대상 선택").change(function() { 자바스크립트 코드; });
$("이벤트 대상 선택").on("change", function() { 자바스크립트 코드; });
2. focus 이벤트 강제 발생
$("이벤트 대상 선택").change();
키보드 이벤트
키보드 이벤트는 사용자가 키보드로 입력을 하면 발생한다.
keydown()/keyup()/keypress() 이벤트 메서드
keydown()와 keypress() 이벤트 메서드는 선택한 요소에서 키보드 자판을 눌렀을 때 이벤트를 발생시키거나 해당 이벤트를 강제로 발생시킨다. 두 이벤트의 차이점을 보면 keydown()은 모든 키(한글 키 제외)에 대해서 이벤트를 발생시키지만, keypress()는 기능키(F1 ~ F12, Alt, Ctrl, Shift, Backspace, Caps Lock, 한/영, Tab 등)에 대해서는 이벤트를 발생시키지 않는다.
1. keydown 이벤트 등록
1. $("이벤트 대상 선택").keydown(function() { 자바스크립트 코드; });
2. $("이벤트 대상 선택").on("keydown", function() { 자바스크립트 코드; });
2. keydown 이벤트 강제 발생
$("이벤트 대상 선택").keydown();
3. keyup 등록
1. $("이벤트 대상 선택").keyup(function() { 자바스크립트 코드; });
2. $("이벤트 대상 선택").on("keyup", function(){ 자바스크립트 코드; });
4. keyup 이벤트 강제 발생
$("이벤트 대상 선택").keyup();
5. keypress 등록
1. $("이벤트 대상 선택").keypress(function() { 자바스크립트 코드; });
2. $("이벤트 대상 선택").on("keypress", function(){ 자바스크립트 코드; });
6. keypress 이벤트 강제 발생
$("이벤트 대상 선택").keypress();
이벤트가 발생한 요소 추적하기
사이트 방문자가 이벤트를 발생시킨 요소의 정보를 구해오는 방법이다. 이벤트가 발생한 요소를 선택해 오는 선택자 $(this) 사용하기
$(this) 선택자
이벤트 핸들러에서 $(this)를 사용하면 이벤트가 발생한 요소를 선택하여 이벤트가 발생한 요소를 추적할 수 있습니다.
index() 인덱스 반환 메서드
index() 인덱스 반환 메서드는 이벤트를 등록한 요소 중 이벤트가 발생한 요소의 인덱스값을 반환한다.
$("이벤트 대상 선택").on("이벤트 종류", function(){
$("이벤트 대상 선택").index(this);
});
그룹 이벤트 등록 및 삭제하기
그룹 이벤트 등록 메서드
그룹 이벤트 등록 메서드를 사용하면 한 번에 2개 이상의 이벤트를 등록할 수 있다. 즉, 선택한 요소에 이벤트 등록 메서드를 한 번만 적용하여 ‘마우스 포인터를 올렸을 때’와 ‘포커스가 생성되었을 때’처럼 두 종류의 이벤트가 발생하도록 만들 수 있다.
그룹 이벤트 등록 메서드의 종류
- on() : 이벤트 대상 요소에 2개 이상의 이벤트를 등록한다. 사용 방식에 따라 이벤트를 등록한 이후에도 동적으로 생성되거나 복제된 요소에도 이벤트가 적용된다.
- bind() : 이벤트 대상 요소에 2개 이상의 이벤트를 등록한다.
- delegate() : 선택한 요소의 하위 요소에 이벤트를 등록한다. 이벤트를 등록한 이후에도 동적으로 생성되거나 복제된 요소에도 이벤트가 적용된다.
- one() : 이벤트 대상 요소에 1개 이상의 이벤트를 등록한다. 지정한 이벤트가 1회 발생하고 자동으로 해제된다.
on() 메서드
on() 메서드는 선택한 요소에 이벤트를 등록한 이후에도 새롭게 생성되거나 복제된 요소에 이벤트를 적용할 수 있다. 즉, 동적으로 생성되거나 복제된 요소에도 이벤트가 등록된다.
$([document | "이벤트 대상의 상위 요소 선택"]).on("이벤트 종류", "이벤트 대상 선택", function() {
자바스크립트 코드;
});
delegate()/one() 이벤트 등록 메서드
delegate() 이벤트 등록 메서드는 선택한 요소의 하위 요소에 이벤트를 등록한다. 그리고 이벤트를 등록한 이후에도 동적으로 생성된 요소와 복제된 요소에도 이벤트를 등록한다.
$([document | "이벤트 대상의 상위 요소 선택"]).delegate("이벤트 대상 요소 선택", "이벤트 종류", function() {
자바스크립트 코드;
});
one() 이벤트 등록 메서드는 이벤트가 1회 발생하면 자동으로 등록된 이벤트가 제거된다. 즉, 일회성 이벤트를 등록할 때 사용한다. one() 이벤트 등록 메서드도 등록 방식에 따라 ‘라이브 이벤트’의 등록이 가능하다.
1. one() 기본 이벤트 등록 방식
$("이벤트 대상 선택").one("이벤트 종류", function() {
자바스크립트 코드;
});
2. one() 라이브 이벤트 등록 방식
$([document | "이벤트 대상의 상위 요소 선택"]).one("이벤트 종류", "이벤트 대상 요소 선택", function() {
자바스크립트 코드;
});
Comments