Attributes
DOM의 속성 제어
● Attr
attr(attributeName) : 해당 속성 이름의 값을 return 한다. 매치되는 첫번째 것만 가져옴
|
1
2
3
4
5
6
7
8
9
10 |
$("#myimg").attr("src", "/myimg.jpg?timestamp=" + new Date().getTime()); // IE6 또는 7에서 속성을 추가, 제거 할 경우 prop() , removeProp() 메소드 사용 jQuery("input[type='text']").prop("disabled", true); // 주의 : jQuery의 src 어트리뷰트에 대한 attr 함수를 이용하여 동일한 경로의 // 사진을 업데이트 하려고 할 때, 크롬의 경우에는 src 속성이 같으면 이미지를 // 새로 불러오지 않는 다. 이런 경우 다음과 같은 방법을 사용 한다. $("#myimg").attr("src", "/myimg.jpg?timestamp=" + new Date().getTime()); |
attr(attributeName, value) : 해당 요소의 속성(attributeName)의 값을 변경시킨다.
|
1
2
3
4 |
// a라는 id를 가진 요소의 src경로를 img/test.gif로 변경한다. $(function(){ $("#a").attr("src", "img/test.gif"); }); |
attr(attributeName, fn) : 해당 요소의 속성(attributeName)의 값을 function으로 변경 한다.
|
1
2
3
4
5
6 |
// a라는 id를 가진 요소의 src경로를 img/ + 해당속성의 title + .gif 경로로 변경시킨다.$(function(){ $("#a").attr("src", function(){ return "img" + this.title + ".gif"; });}); |
attr(map) : 해당 요소에 여러 속성을 변경한다.
|
1
2
3
4
5
6
7
8 |
// a라는 id를 가진 요소의 src경로를 img/test.gif로 title과 alt는 test로 변경한다. $(function(){ $("#a").attr({ src : "img/test.gif", title : "test", alt : "test" }); }); |
removeAttr(attributeName) : 해당 요소의 속성(attributeName)을 제거한다.
|
1
2
3
4
5
6
7
8 |
// a라는 id를 가진 요소의 disabled 속성을 제거한다. $(function(){ $("#a").removeAttr("disabled"); }); // img 태그의 src 속성 제거 시 주의 사항 $('#img').removeAttr("src"); // Firefox, IE7-9, and Safari. $("#img").attr("src", ""); // Chrome |
prop(propertyName[, value])
: prop()은 attr()과 매우 흡사한 메서드지만 사용방식에 따라 결과값이 다를 수 있다.
※ 주의 : attribute와 property는 다른 개념이니 반드시 구분할 것
요소에 적용할 수 있는 속성 중 disabled="disabled", 혹은 readonly="readonly" 등과 같은 속성을 대상으로 할 때
attr('disabled')은 해당 속성이 있을 경우엔 "disabled", 없을 경우엔 undefined를 리턴하지만 prop('disabled')의 경우엔 true/false를
리턴한다.
또 다른 예로 <input>태그가 갖는 값인 value는 상황에 따라 attribute가 될 수도, property가 될 수도 있는데 만약 HTML 코드 상 value를 직접 적어넣었다면 해당 값은 attribute value로 존재하지만 jQuery의 val()이나 javascript의 value를 통해 값이 바뀌면해당 값은 property value로 존재한다. (이 때 attribute value는 사라지지 않지만 화면상 값은 바뀐다.) 뿐만 아니라 브라우저에서 input 폼에 직접 값을 적어넣어도 이 값은 attribute가 아니라 property로 존재한다. 때문에 $('input').attr('value')는 undefined이지만 prop('value')로 가져올 수 있다.
property와 attribute의 차이 [각주:1]
removeProp(propertyName) : removeAttr()과 같음.
● Class
addClass(className), addClass( function(index, currentClass) )
: 매개변수로 전달된 하나 이상 되는 클래스명을 확장 집합의 모든 엘리먼트에 추가한다.
: className : (String)클래스명을 포함하는 문자열, 여러 클래스명을 추가할 때는 공백으로 구분한다.
: return 확장집합
|
1
2
3
4
5
6
7 |
// a 라는 id를 가진 요소에 boxTF라는 class를 추가한다. $("#a").addClass("boxTF");// b 라는 id를 가진 요소에 boxTA라는 class를 추가한다. $("#b").addClass(function() { return "boxTA"; }); |
removeClass( [ className ]), removeClass( function(index, class))
: 매개변수로 전달된 하나 이상되는 클래스명을 확장 집합에 있는 모든 엘리먼트에서 제거한다.
: className : (String)클래스명을 포함하는 문자열, 다수의 클래스명을 제거하는 경우 공백으로 구분한다.
: return 확장집합
|
1
2 |
// a 라는 id를 가진 요소에 boxTF라는 class를 제거한다.$("#a").removeClass("boxTF"); |
toggleClass(className)
: 매개변수로 전달된 클래스명이 엘리먼트에 존재하지 않으면 추가하고, 존재한다면 제거한다.
: className : (String)토글 대상 클래스명을 포함하는 문자열
: return 확장집합
|
1
2 |
// a 라는 id를 가진 요소에 boxTF라는 class를 홀수번째는 추가를 짝수번째는 제거한다.$("#a").toggleClass("boxTF"); |
toggleClass(class, switch)
: 지정 CSS 클래스를 switch가 true이면 추가하고 false(이)라면 삭제
|
1
2
3 |
// a 라는 id를 가진 요소에 $(this).attr("id") == "a" 값이 true일 경우 boxTF라는 class를 홀수번째는 추가를 짝수번째는 제거한다.$("#a").toggleClass("boxTF", $(this).attr("id") == "a"); |
toggleClass(function(index, class), [switch])
: function에서 리턴한 문자열의 이름을 가진 class를 click 할 경우 홀수번째는 추가를 짝수번째는 제거한다.
|
1
2
3
4 |
// a 라는 id를 가진 요소에 boxTF라는 class를 홀수번째는 추가를 짝수번째는 제거한다.$("#a").toggleClass(function() { return "boxTF";}); |
● HTML
html() : 최초의 요소로부터 HTML(을)를 문자열로서 취득한다. 이것은XML(을)를 대상에는 동작하지 않지만 XHTML은 유효
|
1
2
3
4 |
// 첫번째 p 태그안의 HTML을 리턴 받는다.var str = $("p:first").html(); -> 결과 : <b>자바</b> 프레임워크 :<p><b>자바</b> 프레임워크</p> |
html(val) : 모든 요소에 인수로 건네준 HTML(을)를 세트 한다. 마찬가지로 XML에는 동작하지 않지만 XHTML은 유효
|
1
2 |
// a 라는 id를 가진 요소(div 태그등)에 html을 넣는다. $("#a").html("<span>자바 <b>프레임워크</b></span>"); |
● Text
text() : 지정한 요소가 가지는 텍스트 노드를 결합해 돌려준다.
|
1
2
3
4 |
// 첫번째 p 태그안의 문자열을 리턴 받는다.(html은 제외된다.)var str = $("p:first").text(); -> 결과 : 자바 프레임워크 :<p><b>자바</b> 프레임워크</p> |
text(val) : 지정한 요소에 텍스트 노드를 세트 한다.
|
1
2
3
4
5 |
// 첫번째 p 태그안의 문자열을 넣는다.(html을 넣는다 해도 텍스트화 된다..)$("p:first").text("<b>자바</b> 프레임워크"); :<p></p> -> p 태그안에 『<b>자바</b> 프레임워크』가 표시된다 (자바 진하게표시되지 않고 <b> </b>태그가 보인다.) |
● Value
val() : 모든 요소가 가진 value속성의 값을 돌려준다.
|
1
2
3
4
5
6
7 |
// select 객체에서 선택된 value 속성의 값이 리턴 var str = $("#single").val(); : <select id="single"> <option value="a">a</option> <option value="b">b</option> </select> |
val(val) : 모든 요소에 value속성에 값을 설정한다. select를 selects 하거나 radio 등의 값을 설정하는 일도 가능.
|
1
2
3
4 |
// a라는 id를 가진 객체의 value 속성에 값을 설정 한다.(text 객체에 값을 설정) $("#a").val("자바"); : <input type="text" id="a" /> |
CSS
● CSS
css(name)
: 매치된 원소에서 주어진 스타일 속성이 발견되면 그 값을 반환
: Return String
|
1 |
var color = $(this).css("background-color"); |
css(properties)
: 매치되어진 모든 원소에 주어진 키와 값으로 이루어진 속성들의 배열의 스타일을 적용하고 객체를 반환
: Return jQuery 객체
|
1 |
$(this).css({ "background-color":"yellow", "font-weight":"bolder" }); |
css(name, value)
: 하나의 속성과 값을 받아 매치되어진 모든 원소에 적용
: Return jQuery 객체
|
1
2
3
4
5 |
$(this).css("color","red");$("div.expandable").css("width", function(){ return $(this).width() + 20 + "px";}); |
● Positioning
offset()
: 최초의 요소의, 현시점에서의 표시 위치로부터의 offset을 취득
: Return Object{top,left}
|
1
2
3 |
var p = $("p:last");var offset = p.offset();p.html( "left: " + offset.left + ", top: " + offset.top ); |
position() : top, left(을)를 친요소로부터의 오프셋으로 취득
|
1
2 |
position().topposition().left |
scrollTop() : 현재의 스크롤 최상 위치를 취득
scrollTop(val) : 스크롤 상 위치를 지정
scrollLeft() : 현재의 스크롤상의 왼쪽 위치를 취득
scrollLeft(val) : 스크롤 왼쪽 위치를 지정
● Height and Width
height() : 최초의 요소의 높이를 픽셀로 리턴
height(val) : 모든 요소의 높이를 설정
width() : 최초의 요소의 가로폭을 픽셀로 리턴
width(val) : 모든 요소의 가로폭을 설정
innerHeight() : 최초의 요소의 내부 높이(border 제외한 padding)를 취득
innerWidth() : 최초의 요소의 내부 가로폭(border는 제외한 padding)를 취득
outerHeight([options]) : 최초의 요소의 외부 높이(border, padding(을)를 포함)(을)를 취득
outerWidth([options]) : 최초의 요소의 외부 가로폭(border, padding(을)를 포함)(을)를 취득
● 참고
- .height(), .width() : margin, border, padding 제외한 수치. 순수 element 영역
IE 에서 만약 element 가 꽉채워지지 않았다면 height() 값은 세팅된 수치와 다를 수 있다.
width() 는 IE 에서도 세팅된 수치와 동일.
Chrome 에선 width() 나 height() 모두 elelment 과 꽉채워지건 아니건 세팅된 수치와 동일.
- .innerHeight(), .innerWidth() : margin, border 제외한 수치. element 와 padding 포함 영역.
height() 에 padding-top + padding-bottom 를 더한 값.
width() 에 padding-left + padding-right 를 더한 값.
IE 에서 만약 element 가 꽉채워지지 않았다면 height() 값은 세팅된 수치와 다를 수 있다. width() 는 IE 에서도 세팅된 수치와 동일
- .outerHeight(), .outerWidth() : margin 제외한 수치. element, padding, border 포함 영역
innerHeight() 에 border-top 의 두께 + border-bottom 의 두께를 더한 값.
innerWidth() 에 border-left 의 두께 + border-right 의 두께를 더한 값.
IE 에서 만약 element 가 꽉채워지지 않았다면 height() 값은 세팅된 수치와 다를 수 있다. width() 는 IE 에서도 세팅된 수치와 동일
- .outerHeight(true), .outerWidth(true) : element, padding, border, margin 포함 영역
outerHeight() 에 margin-top + margin-bottom 을 더한 값.
outerWidth() 에 margin-left + margin-right 을 더한 값.
IE 에서 만약 element 가 꽉채워지지 않았다면 height() 값은 세팅된 수치와 다를 수 있다. width() 는 IE 에서도 세팅된 수치와 동일
Chrome 에선 outerHeight(true) 값 없음.
- .offset().top, .offset().left
절대좌표 (body 기준 상대좌표)
- .position().top, .position().left
부모 element 기준 상대좌표
- .scrollLeft(), .scrollTop()
element 의 스크롤 좌표
- 대부분 "attribute는 element의 소유, property는 object의 소유개념"이란 출처를 알 수 없는 내용이다. [본문으로]
'JQUERY > 소스코드' 카테고리의 다른 글
| 인풋박스에서 글씨 적혀있다가 커서 위치시 사라지는. (0) | 2014.09.05 |
|---|---|
| [jQuery] DOM요소 추가하기 (0) | 2014.09.05 |
| for문 출력 컨트롤 거꾸로 똑바로 등 (0) | 2014.09.05 |
| jQuery API: Core, Selector, Traversing (0) | 2014.08.19 |
| Traversing 예제 (0) | 2014.08.19 |
| uery attr(), removeAttr() 함수를 이용해서 속성 변경, 속성값 가져오기,제거 해보자 (0) | 2014.08.19 |
| Jquery 부모창 컨트롤!! opener.document (0) | 2014.08.08 |
| [jquery] 부모창 > opener > 객체 접근 (0) | 2014.08.08 |