HTML jQuery each (jQuery 반복문)

2018.05.24 21:39

졸리운_곰 조회 수:554

 

jQuery each (jQuery 반복문)

devs 2015.01.28 20:54
 
1
2
3
for(var i=0; i<10; i++){
 
}

위는 자바스크립트의 반복문입니다.

반복문..매우 많이 사용합니다.

동적으로 무언가 뿌려주려고 사용하고

계산할때도 사용하고..두루두루 많이 사용합니다.

jQuery에서도 반복문이 존재하는데요.

이번 포스팅 주제는 jQuery each 함수 소개입니다.

사실 방금전 jQuery XML 파싱을 설명하다 보충설명이 필요하다 느꼇는데 그 부분이 each 함수에 대한 것이었습니다.

그럼 먼저 each에 대한설명을 하고, 그 뒤에 사용법을 설명하겠습니다.

.each(function(index, element))

이번 설명은 색상의 기본인 RGB 순으로 보시면 되겠습니다. :P

 

 

$('li').each

셀렉터는 앞에 알맞게 본인이 원하는걸 선택하면 되겠습니다.

1. function

반복문 한 바퀴마다 실행될 익명함수입니다.

2. index

반복문이 몇바퀴 째인지 알 수 있는 인덱스 입니다.

예를 들자면 for 문에서 많이 쓰는 i 의 역활이 되겠네요.

익명함수 내부에서 $(index)로 셀렉트 할 수 있습니다.

사용하지 않을 경우에는 제외하셔도 좋습니다.

3. element

현재 반복문에서 셀렉트되는 엘리먼트를 나타냅니다.

익명함수 내부에서 $(element)로 셀렉트 할 수 있습니다.

사용하지 않을 경우에는 제외하셔도 좋습니다.

또한 element 대신 this를 사용하셔도 됩니다.

 

 

설명이 좀 부족한것 같긴한데..더이상의 설명은 생략하겠습니다. 직접 눈으로 보는게 훨씬 빠르고 정확합니다.

바로 마크업과 코드 보시죠.

먼저 마크업입니다.

 

1
2
3
4
5
<div>
    <span>첫번째</span>
    <span>두번째</span>
    <span>세번째</span>
</div>

 

 div 안에 span 태그가 3개가 있네요.

우리는 이제 each 함수로 저 span들의 텍스트를 가지고 올겁니다.

 

1
2
3
$('div').find('span').each(function(i, e){
    console.log($(this).text());
});

 

감이 슬쩍 오실랑가요?

라인별로 설명드리겠습니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

1) 첫번째 셀렉터 div를 기준으로 하위의 span을 찾은 뒤, 반복문(each)을 선언하였습니다.

2) 콘솔창에 span의 수 만큼 반복하여 텍스트를 출력합니다.

결과는 어떻게 나올까요.

첫번째

두번째

세번째

이렇게 나오게 되겠죠?

엄청 간단합니다.

그럼 인덱스(i)를 찍어보면 어떻게나올까요?

0

1

2

예상하신 것처럼 이렇게 나오게 됩니다.

그리고 여기서 익명함수가 발생될때 셀렉터를 보시면 this로 되어있습니다.

this = e 라고 보시면 되겠습니다.

결국 each의 핵심은 셀렉터 입니다.

셀렉터 기준으로 반복하는 것이죠.

예를들어 ul 내부에 li가 10개 있다면 총 반복은 10번 돌게 되는거구요.

100개라면 100번...

너무 당연한 설명을 하는것 같은데 어쩔수없습니다. 진짜 그게다거든요 :D

 

 

응용해서 XML 파싱에서 사용해 봅시다.

 

1
2
3
4
5
6
7
$.ajax({
    url : "요청경로",
    type : "POST",
    success : function(xml){
         
    }
});
 
1
2
3
4
5
6
7
8
9
10
<문서>
    <doc>1</doc>
    <doc>2</doc>
    <doc>3</doc>
    <doc>4</doc>
    <doc>5</doc>
    <doc>6</doc>
    <doc>7</doc>
    <doc>8</doc>
</문서>

 

 서버에 요청 후 나온 결과물이 위의 XML 이라고 하였을때, each를 통하여 doc 부분의 텍스트를 가져오겠다 라고하면.

 

1
2
3
$(xml).find('문서').find('doc').each(function(i, e){
    console.log($(this).text());
});

 

 이렇게 하시면 됩니다.

따지고보면 엘리먼트나 XML 이나 별차이 없습니다.

그냥 셀렉터만 잘잡으면 그만입니다.

이제 UI 단에서도 일괄적으로 each를 통하여 변경할 수있고..

값도 변경할 수있고..

여러가지 할 수 있습니다.

익명함수 내부에서 발생하는 행위는 성질에맞게 잘 구현하시면 됩니다.

어렵지않은 반복문인데 처음에는 구문이 어색할 수 있으므로 자주 사용해보면 좋을 것 같습니다. :D

 



출처: http://annotations.tistory.com/59 [Annotation]

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
60 Is there a limit of vertices in WebGL? 웹지엘의 제약사항 졸리운_곰 2017.08.16 553
59 JavaScript Performance Monitor file 졸리운_곰 2017.08.16 371
58 Monitor Rendering Performance Within Three.js file 졸리운_곰 2017.08.16 541
57 List of WebGL frameworks 졸리운_곰 2017.08.16 500
56 From Unity to Three.js file 졸리운_곰 2017.08.16 1750
55 Collada dae to three.js json convertor sample file 졸리운_곰 2017.08.16 579
54 THREE.WebGLShader: Shader couldn't compile - Chrome Version 44.0.2403.125 #6929 file 졸리운_곰 2017.08.10 555
53 Uniforms types 졸리운_곰 2017.08.10 547
52 Custom shaders with Three.JS: Uniforms, textures and lighting file 졸리운_곰 2017.08.10 699
51 WebGL and ThreeJS Using Blender Models file 졸리운_곰 2017.08.05 355
50 Importing a Modeled Mesh From Blender to Three.js file 졸리운_곰 2017.08.05 458
49 Using SketchUp Models OrcaXS edited this page on 27 Apr · 7 revisions 졸리운_곰 2017.08.05 459
48 Three.js Loading .mtl and .obj - object stays white file 졸리운_곰 2017.08.05 541
47 [three.js] How to Build a First Person Shooter in the Browser with Three.js and WebGL/HTML5 Canvas file 졸리운_곰 2017.07.22 534
46 [three.js] WebGLRenderer 졸리운_곰 2017.07.22 490
45 Clone an Object3D model from a Collada load call 졸리운_곰 2017.07.22 345
44 [three.js] Quaternion 4원수, 사원수 회전 졸리운_곰 2017.07.08 919
43 COLLADA, TinyXML, and OpenGL file 졸리운_곰 2017.07.06 502
42 [github][gist] Mouse-Picking Collada Models with THREE.js file 졸리운_곰 2017.07.06 584
41 Mouse-Picking Collada Models with three.js, Part II file 졸리운_곰 2017.07.06 338
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED