객체조작 메서드는 속성 조작 메서드와 수치 조작 메서드 그리고 객체 편집 메서드로 나눌 수 있다.
속성 조작 메서드는 요소의 속성을 바꿀 때 사용하고, 수치 조작 메서드는 요소의 너비 또는 높잇값과 같은 수치를 바꿀 때 사용하고 객체 편집 메서드는 객체를 생성하거나 삭제 또는 복제,수정 할 때 사용한다.
- html() 메서드
1. $('요소 선택').html(); 만 썻을경우 하위요소 '문자열'로 태그명과 그안 text를 다 가져온다.
2. $('요소 선택').html('안녕하세요'); 인 경우에는 해당 요소에 '안녕하세요'라는 text를 삽입한다. 원래 요소에 아무것도 없는경우는 생성을 해주고 요소에 뭐가 들어있는 경우는 '안녕하세요'로 편집을 한다.
3. $('요소 선택').html('<p>안녕하세요.</p>'); 인 경우에는 해당 요소 안에 <p>안녕하세요.</p> p태그와 text 전부 생성한다. ( virtual dom 생성)
<h1>
<strong>객체 조작 및 생성</strong>
</h1>
<h2>
<em>html()</em>
</h2>
$('h2').html('<p>안녕하세요</p>');
console.log($('h1').html());
console.log(typeof($('h1').html()));
html문서를 보면 <h2>안에 <em>html()</em>이 들어있다.
$('h2').html('<p>안녕하세요.</p>'); 를 js에 써주게 되면 원래 있던
<em>html()</em>을 <p>안녕하세요.</p>으로 바꿔준다. 그리고 <h2>안에 아무것도 없었던 상황이면 새로 생성을 해준다. ( virtual dom 생성)
virtual dom 생성된거 확인
- text() 메서드
1. 선택한 요소의 text를 '문자열'로 가져온다. ( text만 가져온다 html() 처럼 태그는 가져오지 않음. )
2. 선택한 요소안에 text를 생성할 수 있고 원래 있던 text를 변환하는것도 가능하다.
3. html()처럼 virtual dom은 만들어지지 않는다.
$('h1').text('<p>한번바꿔볼게요.</p>')
virtual dom은 생성되지 않는다.
- css() 메서드
1. $('요소 선택').css('속성명'); 을 쓰게되면 해당 요소 속성값을 '문자열'로 가져온다.
2. $('요소 선택').css('속성명','속성값')으로 속성을 새로 생성할 수 도있고 이미 속성이 존재한다면 css()메서드안의 속성명과 속성값으로 바꿔준다.
3. css()메서드는 오직 ( Cascading Style Sheets )만 생성하고 수정할 수 있고 <img>속성인 src같은건 조작이 불가능하다.
$('요소 선택').css('속성명','속성값');
$('요소 선택').css({속성명 : '속성값'});
<div class="asd"></div>
.asd{
width: 300px;
height: 300px;
}
console.log($('.asd').css('width'));
$('.asd').css('background-color', 'blue');
$('.asd').css({backgroundColor : 'blue'});
.asd{
width: 300px;
height: 300px;
background-color: blue;
}
$('.asd').css('background-color', 'yellow');
$('.asd').css({backgroundColor : 'yellow'});
$('img').css('src','mages/girl.jpg');
- attr() 메서드
( 인라인 스타일방식 사용 )
1. $('요소 선택').attr('속성명'); 을 쓰게되면 해당 요소 속성의 속성 값을 '문자열'로 가져온다.
2. $('요소 선택').attr('속성명,'속성값'); 으로 속성을 새로 생성할 수 도있고 이미 속성이 존재한다면 attr()메서드안의 속성명과 속성값으로 바꿔준다.
3. 해당 요소를 css문서로 속성과 속성값을 적어준것도 변환이 가능하다. ( 이런 방식이 있다고만 확인하고 변환해주는 건 attr()로 하는건 추천하지 않는다.)
console.log($('img').attr('width'));
<img alt="girl" width="800" height="500">
$('img').attr('src','images/girl.jpg');
$('img').hover(function(){
$(this).attr('src','images/cat.jpg');
},function(){
$(this).attr('src','images/girl.jpg');
});
<div id="wrap">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
#wrap{
width: 1000px;
height: 300px;
border: 1px solid #000;
}
#wrap div{
float: left;
width: 300px;
height: 250px;
border: 1px solid #000;
}
$('#wrap div').attr('style','display : flex');
$('#wrap div').attr('style','display : flex; justify-content: space-around');
추천하지 않는 방식.
- removeAttr() 메서드
선택한 요소에서 기존의 속성을 제거할 때 사용한다. ( html에서의 inline style방식, attr()메서드로 만든 속성만 지울 수 있고 css에서 만든건 별개라서 지울 수 없다. )
$('img').removeAttr();
$('img').removeAttr('src');
$('img').removeAttr('src','images/girl.jpg');
<div class="asd" style="background-color: blue; width:300px; height:300px"></div>
$('.asd').removeAttr('style');
.asd{
width: 300px;
height: 300px;
background-color: blue;
}
css방식은 removeAttr()로 제거 불가능하다.
- addClass() 메서드
1. addClass()는 일반적으로 어떠한 Event와 같이 많이 사용한다. ( 이벤트에 의해 DOM이 바뀔 때 )
2. $('선택 요소').addClass('클래스명'); 선택한 요소에 지정한 클래스를 생성 또는 바꿔준다.
( $('.클래스명') 처럼 .은 사용하지않고 클래스명만 )
3. addClass()를 사용하여 class를 만들경우에는 해당 요소에 따로 class명을 안쓰고 사용할 수 있고 css도 가능하다.
<p id="p1">내용1</p>
<p id="p2" class="red">내용2</p>
<p id="p3">내용3</p>
<p id="p4" class="green">내용4</p>
<p id="p5" class="yellow">내용5</p>
<p id="p6"></p>
.apua{
background-color : apua;
}
$('#p1').addClass('apua');
- removeClass() 메서드
1. removeClass()도 일반적으로 어떠한 Event와 같이 많이 사용한다. ( 이벤트에 의해 DOM이 바뀔 때 )
2. $('선택요소').removeClass('클래스명'); 기존에 있던 class속성을 제거할 때 쓰인다.
( $('.클래스명') 처럼 .은 사용하지않고 클래스명만 )
.red{
background-color : red;
}
$('#p2').removeClass('red');
- toggleClass() 메서드
1. toggleClss()도 일반적으로 어떠한 Event와 같이 많이 사용한다. ( 이벤트에 의해 DOM이 바뀔 때 )
2. $('선택요소').toggleClass('클래스명'); 선택한 요소에 html에서 <p> 태그에 toggleClass('클래스명'); 이 있는경우에는 제거하고 없으면 생성한다.
.green{
background-color: green;
}
$('#p3').toggleClass('green');
$('#p4').toggleClass('green');
- hasClass() 메서드
$('선택 요소').hasClass('클래스명'); 선택한 요소에 지정한 class가 있으면 true, 없으면 false를 반환한다.
console.log($('#p5').hasClass('yellow'));
console.log($('#p6').hasClass('yellow'));
- val() 메서드
선택한 폼 요소의 value 속성값을 가져오거나 새 값을 적용할 때 사용한다.
대표적으로 <input type="text"> 를 만들고 <button>을 만들어서 사용자가 input에 어떠한 data값을 입력하고 button을 누르게되면 그 data를 가져온다.
그 밖에도 textarea, select가 있다.
<input type="text">
<button>가져오기</button>
$('button').click(function(){
console.log($('input').val());
});
- prop() 메서드
선택한 폼 요소의 상태 속성 값을 가져오거나 새롭게 설정할 때 사용한다.
대표적으로 ( 선택 상자, 체크 박스, 라디오 버튼 )을 만들고 <button>을 만들어서 <input>에 'neme' 속성과 'value' 값을 서버로 전송 시켜준다.
<input type="checkbox" id="blue" name="color" value="blue"> Blue
<input type="checkbox" id="red" name="color" value="red"> Red
<button>확인</button>
$('button').click(function(){
var blue = $('#blue').prop('checked');
console.log(blue);
});
$('#blue').prop('checked',true);
$('#blue').prop('disabled',true);