객체를 생성, 복제, 삭제, 속성 변환하는 객체 조작 메서드들에 대해 알아보겠습니다. 객체 조작 메서드는 속성조작메서드와 수치조작메서드, 객체편집메서드가 있습니다.
객체 조작 메서드는 객체를 생성하거나 삭제, 복제할 때 사용하며 속성 조작 메서드는 요소의 속성을 바꿀 때, 수치 조작메서드는 요소의 너비값이나 높이값 등을 바꿀 때 사용하면 되겠습니다.
속성조작메서드
종류 | 사용법 | 설명 |
html() html("새 요소") |
$("요소 선택").html(); $("요소 선택").html("새 요소"); |
선택한 요소의 하위 요소를 가져옴 선택한 요소의 하위 요소를 모두 제거하고 그 위치에 지정한 새 요소를 생성 |
text() text("새 텍스트") |
$("요소 선택").text() $("요소 선택").text("새 텍스트") |
선택한 요소가 감싸는 모든 텍스트를 가져옴 선택한 요소의 하위 요소를 모두 제거하고 그 위치에 지정한 새 텍스트를 생성 |
attr("속성명") attr("속성명", "새 값") |
$("요소 선택").attr("속성명") $("요소 선택").attr("속성명", "새 값") |
선택한 요소의 지정한 속성값을 가져옴 요소를 선택해 지정한 속성에 새 값을 적용 |
removeAttr("속성명") | $("요소 선택").removeAttr("속성명") | 선택한 요소의 지정한 속성만 제거 |
prop("상태 속성명") prop("상태 속성명", 새 값) |
$("요소 선택").prop("상태 속성명") $("요소 선택").prop("상태 속성명", 새 값) |
선택한 요소의 상태 속성값을 가져옴 요소를 선택해 상태 속성에 새 값을 적용 |
val() val("새 값") |
$("요소 선택").val() $("요소 선택").val("새 값") |
선택한 폼 요소의 value 값을 가져옴 폼 요소를 선택해 value 속성에 새 값을 적용 |
css("속성명") css("속성명", "새 값") |
$("요소 선택").css("속성명") $("요소 선택").css("속성명", "새 값") |
선택한 요소의 지정한 스타일 속성값을 가져옴 요소를 선택하여 지정한 스타일 속성에 새 값을 적용 |
addClass("class 값") | $("요소 선택").addClass("class 값") | 선택한 요소의 class 속성에 새 값을 추가 |
removeClass("class 값") | $("요소 선택").removeClass("class 값") | 선택한 요소의 class 속성에 지정값만 제거 |
toggleClass("class 값") | $("요소 선택").toggleClass("class 값") | 선택한 요소의 class 속성에 지정값이 포함되어 있으면 제거하고 속성값이 없으면 추가 |
hasClass("class 값") | $("요소 선택").hasClass("class 값") | 선택한 요소의 class 값에 지정한 클래스 값이 포함되어 있으면 true 없으면 false 반환 |
html() 메서드는 선택한 요소의 하위 요소를 가져와 문자열로 반환하거나 하위 요소를 전부 제거하고 새 요소로 바꿀 때 사용합니다. text() 메서드는 선택한 요소에 포함되어 있는 전체 텍스트를 가져오거나 선택한 하위 요소를 전부 제거하고 새 텍스틀를 생성할 때 사용합니다. attr() 메서드는 선택한 요소에 새 속성을 생성하거나 기존의 속성을 변경할 때, 요소의 속성값을 불러올 때 사용합니다. removeAttr()은 선택한 요소에서 기존의 속성을 삭제할 때 사용합니다.
addClass() 메서드는 선택한 요소에 클래스를 생성하고, removeClass() 메서드는 선택한 요소에서 지정한 클래스를 삭제합니다. toggleClass() 메서드는 선택한 요소에 지정 클래스가 없으면 생성하고 있을 시 삭제합니다. 약간의 자동 개념입니다. hasClass( ) 메서드는 선택한 요소에 지정한 클래스가 있으면 true, 없을 시 false를 반환합니다.
val() 메서드는 선택한 form 요소의 value 속성값 (사용자가 입력하는 등)을 가져오거나 새 값을 적용할 때 사용합니다. prop() 메서드는 선택한 폼 요소의 상태 속성값을 가져오거나 새롭게 설정할 때 사용하며, 선택 요소의 tagName, nodeType, 그리고 선택상자의 선택된 옵션의 Index 값도 알 수 있습니다.
$("요소 선택").prop("[checked | selected]");
$("요소 선택").prop("[checked | selected]", [true | false});
$("요소 선택").prop("[tagName | nodeType | selectedIndex | defaultValue]");
// 선택한 요소의 태그명, 노드타입, 선택된 옵션의 인덱스값을 구합니다.
// 폼 요소에 prop("defaultValue")를 사용하면
// value 속성값을 바꿔도 초기의 value 속성값을 가져옵니다.
* 단골 의문 : 제이쿼리 attr() 과 prop() 차이
기능 관련 속성을 제외한 나머지는 prop() / attr() 함수결과가 동일하게 나오며 "checked", "selected", "readonly", "disabled" 와 같은 속성일 때 attr 메서드는 checked로, prop 함수에서는 true / false로 출력을 시켜줍니다.
수치조작메서드
종류 | 사용법 | 설명 |
height() | $("요소 선택").height(); $("요소 선택").height(100); |
안쪽 여백과 선을 제외한 높이값을 반환하거나 변환 |
width() | $("요소 선택").width(); $("요소 선택").width(100); |
안쪽 여백과 선을 제외한 너비값을 반환하거나 변환 |
innerHeight() | $("요소 선택").innerHeight(); | 안쪽 여백을 포함한 높이값을 반환하거나 변환 |
innerWidth() | $("요소 선택").innerWidth(); | 안쪽 여백을 포함한 너비값을 반환하거나 변환 |
outerHeight() | $("요소 선택").outerHeight(); | 선과 안쪽 여백을 포함한 높이값을 반환하거나 변환 |
outerWidth() | $("요소 선택").outerWidth(); | 선과 안쪽 여백을 포함한 너비값을 반환하거나 변환 |
position() | $("요소 선택").position().left(); $("요소 선택").position().top(); |
선택한 요소의 포지션 위치값을 반환 |
offset() | $("요소 선택").offset().left(); $("요소 선택").offset().top(); |
선택한 요소가 문서에서 수평/수직으로 얼마나 떨어져 있는지 값 반환 |
scrollLeft() | $("요소 선택").scrollLeft(); | 브라우저의 수평 스크롤 이동 높이값 반환 |
scrollTop() | $("요소 선택").scrollTop(); | 브라우저의 수평 스크롤 이동 너비값 반환 |
height()와 width() 메서드는 여백, 선 두께를 제외한 순수 요소의 높이/너비값을 계산합니다. innerHeight()와 innerWidth() 메서드는 여백을 포함한 요소의 높이/너비값이고, outerHeight()와 outerWidth()메서드는 여백, 선을 포함한 요소의 높이/너비값입니다.
offset() 메서드는 Document를 기준으로 선택한 요소의 가로/세로로 떨어진 좌표값이며, position() 메서드는 선택한 요소가 웹 페이지에 위치할 때 기준이 되었던 부모 요소(offset parent)를 기준으로 하는 상대 위치를 반환합니다. (참고) position() 메서드에서 기준으로 사용되는 부모 요소는 .offsetParent() 메소드를 사용하여 확인할 수 있습니다.
$("요소 선택").position().[left | right | top | bottom]
$("요소 선택").offset().[left | top]
감이 잘 잡히지 않으니 예제로 살펴보겠습니다. id "box_wrap" 의 position 속성에는 relative, class "box"의 position 속성에는 absolute 값을 적용했습니다.
scrollTop() 메서드는 브라우저의 스크롤바가 수직/수평으로 이동한 위치에 대한 값을 불러오거나 변경할 때 사용하는 스크롤바 위치 메서드입니다. 이 메서드의 기본형은 다음과 같습니다.
// 스크롤바가 수직/수평으로 이동한 위치값을 반환합니다.
$("요소 선택").scrollTop();
$("요소 선택").scrollLeft();
// 입력한 수치만큼 수직 또는 수평으로 스크롤바를 이동시킵니다.
$("요소 선택").scrollTop(새 값);
$("요소 선택").scrollLeft(새 값);
객체 편집 메서드
선택한 요소를 복제하거나 새 요소를 생성하는 메서드, 복제/생성한 요소를 의도한 위치에 삽입하고 선택 요소를 삭제하는 기능을 구현할 수 있습니다. 객체편집메서드의 종류와 사용법은 다음과 같습니다.
종류 | 사용법 | 설명 |
before() | $("요소 선택").before("새 요소"); | 선택한 요소의 이전 위치에 새 요소 추가 |
after() | $("요소 선택").after("새 요소"); | 선택한 요소의 다음 위치에 새 요소 추가 |
append() | $("요소 선택").append("새 요소"); | 선택한 요소의 마지막 위치에 새 요소 추가 |
appendTo() | $("새 요소").appendTo("요소 선택"); | 선택한 요소의 마지막 위치에 새 요소 추가 |
prepend() | $("요소 선택").prepend("새 요소"); | 선택한 요소의 맨 앞 위치에 새 요소 추가 |
prependTo() | $("새 요소").prependTo("요소 선택"); | 선택한 요소의 맨 앞 위치에 새 요소 추가 |
insertBefore() | $("새 요소").insertBefore("요소 선택"); | 선택한 요소의 이전 위치에 새 요소 추가 |
insertAfter() | $("새 요소").insertAfter("요소 선택"); | 선택한 요소의 다음 위치에 새 요소 추가 |
clone() | $("요소 선택").clone(true or false); | 선택한 문서 객체를 복제합니다. 인자값이 true일 경우 하위 요소까지 모두 복제, false일 경우 선택 요소만 복제 |
empty() | $("요소 선택").empty(); | 선택한 요소의 하위 내용을 모두 삭제 |
remove() | $("요소 선택").remove(); | 선택한 요소를 삭제 |
replaceAll() replaceWith() |
$("새 요소").replaceAll("요소 선택"); $("요소 선택").replaceWith(새 요소); |
선택한 요소들을 새 요소로 교체 |
unwrap() | $("요소 선택").unwrap(); | 선택한 요소의 부모요소 삭제 |
wrap() | $("요소 선택").wrap(새 요소); | 선택한 요소를 새 요소로 wrap |
wrapAll() | $("요소 선택").wrapAll(); | 선택한 요소를 새 요소로 한꺼번에 wrap |
wrapInner() | $("요소 선택").wrapInner(새 요소); | 선택한 요소의 내용을 새 요소로 각각 wrap |
append()/prepend()와 appendTo()/prependTo()는 선택한 요소와 새 요소의 위치만 서로 바뀐 것입니다. before()과 insertBefore()도 마찬가지입니다. replaceAll()과 replaceWith()는 선택한 요소를 새 요소로 바꾸는데 주로 선택한 모든 요소를 한꺼번에 바꿀 때 사용합니다. wrap() 메서드를 사용할 때 새 요소에 <div></div>이렇게도 가능하지만 <div />이렇게 사용할 수도 있습니다. ($(".class").wrap("<div />");)
'Javascript > JQuery' 카테고리의 다른 글
jQuery 비동기 방식 연동 (0) | 2020.04.23 |
---|---|
jQuery 다양한 효과와 애니메이션 (0) | 2020.04.22 |
뉴스기사 페이지 스크롤에 따른 퍼센트 보이는 기능 구현 (0) | 2020.04.14 |
dom 안의 요소(element)의 개수 구하기 방법들 (jquery, js) (0) | 2020.04.07 |
[문제] jQuery resizable 첫 번째 요소에서만 작동 해결 (0) | 2020.03.19 |