jquery

[jquery] 문서객체조작 / 요소추가 / 삭제,복사 / attr / css 관련 메서드

sian han 2022. 4. 27. 15:59

※ 문서객체조작

 - 조작관련메서드 : 요소에 값을 지정하거나, 특정 요소의 값을 읽어오거나, 동적으로 요소 자체를 생성, 삭제, 복사, 제거하는 기능 들

 

▶ $( )

  ▷ $(html태그) - 문서 객체를 생성한다

      - 인자로 html 태그를 지정한 경우에는 동적으로 그 요소를 생성

 $("<span>(클릭)</span>").appendTo("b");

    = > (클릭)라는 태그 문자열을 동적으로 생성한 뒤, 그를 모든 b 태그의 뒤에 덧붙임

 

 

  ▷ $('선택자') -  문서 객체를 선택한다

      - 인자로 선택자를 지정한 경우에는 일치되는 모든 요소를 찾음

$("#linkText")

    = > #linkText라는 선택자에 일치하는 요소들을 검

 

 

 

 html() / text() 

  - 요소의 내용을 다루는 메소드

  ▶ html()

   - 사잇값 + 태그까지 가져옴 : 이는 요소의 innerHTML 값과 동일

   - $(selector).html(value); : 셋팅하라는말

 

$('#div1').html(result);
$('#div1').html(<br>result<br>);

  = > result

            - 태그 포함해서 () 안에 값 넣을 경우 태그가 적용된 문자열이 나온다

 

$('#sp1').html('<u>html 로 값 넣기</u>');

  = > html 로 값 넣기

 

 

    ▷ 일치된 요소가 여러 개인 경우

           - 일치된 요소들 중 첫 번째 요소의 html 만을 반환

 

 

    ▷ $(selector).html(function(index){});

         - each 를 대신하는 기능 : idx 를 매개변수로 넣으면 each() 처럼 사용할 수 있다

$('div').html(function(idx){ 
	return "<p>문단 -" + idx + "</p>";
});

return : idx

 => idx 가 return 되어 다시 매개변수로 들어가는것의 반복이 이루어지기때문에

      each() 문을 사용한것과 동일한 결과를 볼 수 있다

 

 

    ▷ $(selector).html(function(idx,html){});

         - each 를 대신하는 기능2 : each()대신 메서드의 매개변수로 function 을 넣기

$('h2').html(function(idx,html){
	return "[" + html + "]";
});

retrun : html

  => h2에서 태그사이의 값을 가져와서 리턴 => 리턴한값이 다음 값의 매개변수로 들어감

 

 

 

  ▶ text()

   - 사잇값만가져옴

   - $(selector).text(value); : 값넣기

   - $(selector).text(function(index, text){});

$('#div1').text(result);
$('#div1').text(<br>result<br>);
<div id="div1"> result </div>

  = ><br>result<br>

            - 태그 포함해서 () 안에 값 넣을 경우 태그가 그대로 출력된다

 

$('span:eq(1)').text('<u>text 로 값 넣기</u>');

  = > <u>text 로 값 넣기</u>

 

 

    ▷ 일치된 요소가 여러 개인 경우

           - 일치된 모든 대상의 텍스트를 결합해서 반환

 

 

 


요소를 추가하는 메소드

 

▶ append() 

  - 매개변수로 들어온 content 를 개채 "내부" 뒤쪽에 덧붙이는 메서드

  - 만약 B태그.appen(val) 로 사용한다면, 

    B태그 내부 뒤쪽에 덧붙이는 것이기 때문에 B태그 val 로 표현된다

var h1 ='<h1>제목1</h1>';

 

$('#p1').append(h1);

 

 ▽ append 전 p태그

<p id="p1">p 태그입니다1.</p>

 ▽ h1 을 아이디p1 에 append 후

 

  = > p 태그 안쪽에 ! h1 태그가 잘 붙은것을 볼 수 있다

 

 

 

each() 대신에 매개변수로 function 이 들어가 있는 append 를 사용할 수 있다

var arr=[
    {name:'홍길동',id:'hong'},
    {name:'김길동',id:'kim'},
    {name:'이길동',id:'lee'}
];
$('div').append(function(idx){
    var obj = arr[idx];
    var str = obj.name + "- <b>" + obj.id+"</b>";
    return str;  // 리턴된 값이 다시 function 으로 들어감
});

▽ 이걸 each()

$("div").each(function(idx, item) {
            var obj = arr[idx];
            $(this).append(obj.name + " - <b>" + obj.id + "</b>");
});

 

 

 

▶ appendTo() 

  - append와는 덧붙이기의 대상이 반대

    append : 매개변수로 들어온 content 개채 내부 뒤쪽에 덧붙이는 메서드

    appendTo : 매개변수로 들어온 content 내부뒤쪽 덧붙이는 메서드

 

  - 선택자에 의해 일치된 대상 모두에게 덧붙여짐

  - 복사해서 '붙여지는' 자리의 요소는 자라지고, 새로 붙여지고

    '복사되는' 원본개채는 복사되면서 제거됨

 

$('<h></h1>').html('안녕').appendTo('#div1');

  - $(html태그) - 문서 객체를 생성한다

  => h태그를 생성해서 이 태그 사이에 '안녕'을 넣고 이걸 #div1 태그 사이에 덧붙여라

 

 

  ▷ 이미지 붙이기

$('<img>').attr('src','../image/dog.jpg').appendTo('#div3');

$('<img>', {src:'../images/snow.jpg',
				width :100,
				border:1
    }).appendTo('#div4');
}); // 이렇게 세세하게 속성 지정해서 붙일 수도 있음

  => img 태그를 생성해서 / src 속성을 추가하고 속성의 값을 ..jpg 로한다 / 이를 #div3 태그 내부 뒤쪽에 덧붙인다

 

 

 

  ▷ appendTo() 와 setInterval

setInterval(function(){//일치된 요소가 본문에 존재하면, 제거한 후 붙인다
			$('img').first().appendTo('div');//첫번째거를 잘라내서 계속 뒤에 붙이니까 우리눈에는 이미지가 돌아가는것처럼 보임
		},1000);
	});
<body>
	<div>
		<img src="../images/dog.jpg" /> 
		<img src="../images/magnum1.jpg"/>
		<img src="../images/snow.jpg" />
	</div>
</body>

appendTo() 는 요소가 본문에 존재하면, 제거한 후 붙인다는 특징이있다.

body 에는 img태그가 존재하므로 지정된 img:first 는 계속 잘라내기 되어

appendTo('div') 가 된다.

  => 1초마다 첫번째거를 잘라내서 계속 뒤에 붙이니까 우리눈에는 이미지가 돌아가는것처럼 보임

 

 

▶ prepend() / prependTo()

  - append와 동일하지만, 요소를 에 덧붙이는 것이 아 니라 앞에 덧붙임

 

 

▶ after() 

  - 일치된 요소 외부 뒤에 content를 삽입함

  - 요소 내부가 아닌 외부에 삽입된다는 것을 제외하면 append와 동일

 

▶ before() 

  - 일치된 요소 외부 앞에 content를 삽입

  - 요소 내부가 아닌 외부에 삽입된다는 것을 제외하면 prepend와 동일

 

 


삭제용 메서드와 복사용 메서드

 

▶ empty() 

  - 자식제거

$('#div1').empty();

  => #div1의 자식들이 제거됨

 

 

▶ remove()

$('h2').first().remove();

   - h2:first  - 첫번째 h2태그

   - $('h2').first() - h2태그의 첫번째 자식

  => 따라서 h2의 첫번째 자식이 remove 됨

 

▶ clone()

  - 일치된 요소를 복사하고, 그를 선택함

▶ clone(bool)

  - 이벤트 처리기를 포함하여 DOM 요소를 복사하고 그를 선택함

$(document).ready(function(){
		$('.annotation').each(function(idx, item){
			$(this).after("<sup>"+(idx+1)+"</sup>"); 
		});
		
		$('button').click(function(){ // #nextBtn 이벤트
			alert($(this).text());  //eventHandler에서 this :이벤트가발생한객체 
			
			$(this).remove();
		});
		
		var $prev=$("#prevBtn").clone(); // #prevBtn 요소를 복사
		var $next=$("#nextBtn").clone(true); //#nextBtn 요소를 복사하고, 이벤트까지 복사

	});
$('#bottomDiv').prepend($prev);
$('#bottomDiv').append($next);

#bottomDiv 앞에 붙여진 복사본 prev 버튼은 겉모습만 동일하지만

#bottomDiv 뒤에 붙여진 복사본 next 버튼은 겉모습도 동일하고 이벤트까지 걸려있다

 

 

 


 

※ css 관련메서드

 

▶ css( name )

   - 매치되는 첫번째 요소의 스타일 속성을 반환한다.

var color = $(this).css("color");

 

 

css( name, value ) 

  - 매치된 모든 요소에 대해 단일 스타일 속성을 설정한다

 $(this).css('color', 'yellow');

 

예제 1 ) 

$('#img1').addClass('winter').css('width', '200');

  - addClass : 매치된 요소들의 각 집합에 지정된 CSS 클래스를 추가한다. 

  =>  img1에 winter cssClass 를 넣고 width 200 을 추가해라 

 

<img id="img1" src="../image/magnum2.jpg" class="winter" style="width: 200px;">

 △ 추가됨

 

 

예제 2 ) 

$('button:eq(0)').click(function() {
	$('#img1').toggleClass('summer');
});

$('button:eq(0)').click(function() {
	$('#img1').toggleClass('winter');
});

  - toggleClass( class ) : 지정된 클래스가 적용되지 않았다면 적용하고, 이미 적용되어 있다면 제거한다. 

 

 

 

 

css( properties )

  - 매치된 모든 요소들의 스타일 속성에 키/값 객체를 설정한다.

  - 여러 CSS 속성을 한번에 설정할 수 있는 오버로드 메서드

$(this).css(
	{ 'color':'yellow','font-weight':'bold'}
);
$(document).ready(function() {
    $('span').css({
        background : 'pink',
        color : 'blue',
        "font-weight" : 'bold'
});

 

 


 

 

※ Attribute 관련 메서드

 

▶ attr( name ) 

  - 매치된 첫 번째 요소의 특정 어트리뷰트에 접근하여 값을 가져온다

  - 만일, 지정된 어트리뷰트 명이 존재하지 않는 다면 undefined가 반환된다

      - attribute 어트리뷰트 : title, alt, src, href, width, style 등

$( 'div' ).attr( 'class' );

  => div 요소의 class 속성의 값을 가져옴

console.log($('a').attr('href'));

  => a태그의 href 속성을 가져와서 console 에 찍어라 ▽ 찍힘

 

 

▶ attr( name, value ) 

  - 선택한 요소에 속성을 추가함

$( 'h1' ).attr( 'title', 'Hello' );

 => h1 요소에 title 속성을 추가하고 속성의 값은 Hello로 함

 

 

예제 1 ) img:first 에 마우스 올리면 다른 이미지 출력되도록

$('img:first').mouseover(function(){
	$(this).attr('src','../images/magnum2.jpg');	
});
$('img:first').mouseout(function(){
	$(this).attr('src','../images/magnum1.jpg');	
});

 

 

 

 

▶ attr( properties ) 

$("#photos img").attr({
    border: "1px",
    height : "100"
});
$('#photos img').attr({
			border:'3px',
			height:'100'
		}).attr('title', function(idx){
			return (idx+1) +"번째 이미지"
		});

 

  

 

 

 

attr 응용

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<style type="text/css">
    #showImage{ display:none;border:1px solid gray;width:300px;height:300px; }
</style>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">

	$(document).ready(function(){
		$('#product img').hover(function(){//마우스를 특정 엘리먼트 위에 올리면 발생하게되는 이벤트 
			$('#showImage').show();
			
			var imgSrc=$(this).attr('src');  //=>../images/herb1.JPG
			
			// 순수 파일명만 얻기 => herb1.JPG
			imgSrc=imgSrc.substr(imgSrc.lastIndexOf("/")+1);
			
			$('#showImage img').attr('src','../images/big/' + imgSrc);
		}, function(){
			$('#showImage').hide();			
		});
	});
</script>
</head>
<body>
<div id="product">
    <img src="../images/herb1.JPG" />
    <img src="../images/herb2.JPG" />

    <div id="showImage">
    	<img  />        
    </div>
</div>

</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
	$(function(){
		$('#photos img').attr({
			border:'3px',
			height:'100'
		}).attr('title', function(idx){
			return (idx+1) +"번째 이미지"
		});
		
		$('#photos img').attr('width',function(idx){
			return (idx+1)*100;
		});
		
	});
</script>
</head>
<body>
	<div id="photos">
      <img src="../images/dog.jpg" />
      <img src="../images/magnum1.jpg" />
      <img src="../images/snow.jpg" />
      <img src="../images/wood.JPG" />
      <img src="../images/magnum2.jpg" />
  	</div>

</body>
</html>

'jquery' 카테고리의 다른 글

[JQeury] Ajax  (0) 2022.06.20
[jquery] 문제를 통한 jquery 이벤트 및 메서드 사용예제  (0) 2022.05.07
[jquery] 탐색메서드, 이벤트, 효과  (0) 2022.05.07
[jquery] 선택자 / each()  (0) 2022.04.26