제이쿼리 find - jeikwoli find



Description

The find( selector ) method searches for descendant elements that match the specified selector.

Syntax

Here is the simple syntax to use this method −

selector.find( selector )

Parameters

Here is the description of all the parameters used by this method −

  • selector − The selector can be written using CSS 1-3 selector syntax.

Example

Following is a simple example a simple showing the usage of this method.

<html>
   <head>
      <title>The jQuery Example</title>
      <script type = "text/javascript" 
         src = "https://www.tutorialspoint.com/jquery/jquery-3.6.0.js">
      </script>
		
      <script type = "text/javascript" language = "javascript">
         $(document).ready(function() {
            $("p").find("span").addClass("selected");
         });
      </script>
		
      <style>
         .selected { color:red; }
      </style>
   </head>
	
   <body>
      <div>
         <p><span>Hello</span>, how are you?</p>
         <p>Me? I'm <span>good</span>.</p>
      </div>
   </body>
</html>

This will produce following result −

Example

Following is a simple example a simple showing the usage of this method.

<html>
   <head>
      <title>The jQuery Example</title>
      <script type = "text/javascript" 
         src = "https://www.tutorialspoint.com/jquery/jquery-3.6.0.js">
      </script>
		
      <script type = "text/javascript" language = "javascript">
         $(document).ready(function() {
            $("p").find("span").addClass("selected");
         });
      </script>
		
      <style>
         .selected { color:red; }
      </style>
   </head>
	
   <body>
      <div>
         <p><span class = "selected">Hello</span>, how are you?</p>
         <p>Me? I'm <span class = "selected">good</span>.</p>
      </div>
   </body>
</html>

This will produce following result −

jquery-traversing.htm

제이쿼리 find - jeikwoli find

제이쿼리를 사용해 자식요소를 선택하는 메소드로 find()를 사용할 수 있습니다. 아래는 제이쿼리의 메소드 find()에 대하여 자세히 알아봅니다.

# 제이쿼리 find() 메소드 알아보기
먼저 find() 함수는 선택된 요소의 자식 요소중 일치하는 자식요소를 찾아 반환하여 줍니다. children() 메소드가 바로 한단계 아래의 요소중에서 찾는다면 find()는 모든 자식 요소 내에서 찾은 후 반환한다는 점이 차이점입니다.

$(선택요소).find('찾을조건')

그럼 간단한 예제를 통해 알아보도록 하겠습니다. 만약 아래와 같은 소스코드가 있다고 할 경우 div 태그내의 모든 p태그를 찾으려면 어떻게 해야하는지 알아보겠습니다. 먼저 html 코드입니다.
@ find.html

<div>
  <p>TEST string 1</p>
  <p>TEST string 2</p>
</div>

아래는 스크립트 코드입니다.
@ find.js

testEle = $('div').find('p');

// div 태그의 자식요소들 중 p 태그를 서칭하여 반환

제이쿼리를 사용해 변수 testEle에 div 태그의 자식요소중 p 태그를 모두 지정한 예제입니다. find()태그를 사용하면 자식 요소안에서만 찾을 수 있기 때문에 찾는 범위를 줄이고 오차 역시 줄일 수 있는 장점이 있습니다.

자식 요소안에서 찾는 함수중 filter() 함수도 존재합니다. 하지만 filter() 함수는 자식요소내에서 찾는것이 아닌 현재요소를 기준으로 범위를 줄여간다고 생각하시면 될 것 같습니다.

# 마치면서
여기까지 find() 메소드에 대하여 자세히 알아보았습니다. 자식 요소를 찾는 방법은 여러가지 있으나 find()는 가장 많이 사용되는 방법 중 하나입니다.

! find()는 자기 자신을 포함할까요?
find()를 사용할 경우 자기 자신은 포함하지 않으며 자식 요소에서만 찾을 수 있습니다. 만약 자기 자신을 포함하면서 자식요소까지 찾길 원하는 경우 parent()를 함께 사용할 수 있습니다. 예를들어 아래와 같습니다.

$(this).parent().find('.test')

저 역시 궁금하여 테스트 해보았으나 자기 자신 요소는 제외되니 참고하세요.

봉봉의 개인 블로그

입사후 공부한내용

2018-01-12(JQuery 자식 요소 선택 방법 및 찾기 Children(), find())

봉봉이네 2018. 1. 12. 12:18

.Children()

JQuery를 사용하여 간단하게 자식 요소를 선택하는 방법을 알아보려고 합니다. 자식 요소를 선택하는 방법에는 children() 함수가 많이 사용됩니다. 이 외에도 find() 함수가 존재하는데 오늘은 children()에 대하여 자세히 알아봅니다.

#JQuery children() 자식 요소 얻기

위에 잠시 언급한 find() 그리고 오늘 알아볼 children()의 차이점을 알아보겠습니다. 이 둘의 차이점이라면 children()은 부모 요소의 바로 아래 단계인 자식요소만 선택할 수 있으나, find()는 부모 태그의 모든 하위 요소의 자식을 선택하여 가져올수 있다는 점이 차이점이다. 그럼 children()의 간단한 사용방법은 아래와 같습니다.

$(element).children(option)

괄호안의 선택옵션은 필수가 아닌 선택입니다. 만약 옵션을 입력할 경우 특정 요소만 필터링 하여 반환하는 것이 가능합니다. 즉 아래와 같이 사용할 수 있습니다.

!children() 옵션 사용하여 찾기 예제보기

아래는 red라는 클래스 명을 가진 자식 요소만 찾아서 반환합니다.

@children.html

@children.js

$('body').children('.red');

//red 클래스명의 자식요소만 찾아 

cs

위 코드를 실행하면 red 클래스를 가진 요소만 선택됩니다. 그럼 아래에서 다른 방법의 예제를 알아보세요.

# children()함수 예제보기

이번 예제는 모든 자식요소를 jQuery 셀렉터로 선택하는 방법을 알아보려합니다.여기서는 div태그의 자식 요소를 먼저 성택해보겠습니다. 그리고 이를 변수 childrens에 저장해보겠습니다.

@children.html

<div>

<p class = 'test1'>

<p class = 'test2'>

</div>

cs

@children.js

var childrens = $('div').children();

cs

실행하면 위 태그에서 div 태그의 모든 자식요소가 변수에 저장되었을 것입니다. 즉 변수 childrens는 div태그 요소의 모든 자식 요소들이 저장되었습니다.

(참고로 일반적으로 제이쿼리 엘리먼트 요소를 변수로 저장할때는 $를 앞 또는 뒤에 추가하여 나타냅니다. 즉 childrens 보다는 $childrens 또는 childrens$ 로 사용합니다.)

#자식 요소에서 원하는 요소만 선택하는 방법

그럼 또 다른 예제입니다. 앞에도 알아봤지만 옵션을 선택하면 자식 요소의 필터링... 즉 좀더 정확한 자식 요소만 가져올 수 있습니다.
(자식 요소들 중에서 원하는 요소만 선택할 수도 있음.)

바로 괄호 안의 매개변수로 선택사항을 추가입력하면 됩니다. 아래 예제를 봐주세요.

!자식 요소중에서 span 태그 요소만 가져오기

이번에는 자식 요소에서 span 태그 요소만 가져오는 방법입니다.

@children.html

<div>

<span>1</span>

<span>2</span>

<p>3</p>

</div>

cs

태그의 이름이 span인 것만 가져오기 위해 아래처럼 스크립트를 작성 후 실행합니다.

@children.js

$('div').children('span');

cs

이제 div 자식 요소중에서 span 태그 요소만을 선택되었습니다.

.find()

개요 : 선택된 요소 집합에서 선택자, jquery 객체, 요소와 같은 인자에 맞는 요소들을 걸러내어 줍니다.

.find(selector)  *selector : 일치하는 요소를 위한 선택자가 표현된 문자열*

.find(jQuery object) *jQuery object : 요소를 찾을 jQuery 객체*

.find(element) *element : 요소를 찾을 요소 표현*

jQuery 객체를 이용해서 표현된 DOM 요소 집합에 .find()함수를 사용하면 DOM tree 에서 하위(자식) 요소들을 찾아내어 새로운 jQuery 객체를 생성합니다. .find() 와 .children() 함수는 비슷합니다. 하지만 .children() 함수는 직계 자식 요소만을 추출할 수 있는 것이 .find()함수와 다른 점입니다.

예제를 보겠습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<ul class="level-1"

<li class="item-i">I</li

<li class="item-ii">II

<ul class="level-2"

<li class="item-a">A</li

<li class="item-b">B 

<ul class="level-3">

<li class="item-1">1</li>

<li class="item-2">2</li>

<li class="item-3">3</li>

</ul>

</li>

<li class="item-c">C</li>    

</ul>

</li>

<li class="item-iii">III</li>

</ul>

cs

item II를 기준으로 li 요소들을 모두 찾아내는 스크립트는 아래와 같습니다.

$('li.item-ii').find('li')

cs

이 스크립트에 영향을 받는 li 요소들은 A,B,1,2,3,C 입니다. 즉, 하위 (자식)요소들을 깊이에 상관없이 모두 찾아내어 준다는 뜻입니다. 위에서도 말씀드렸듯이 .children()과 가장 큰 차이점입니다.

참고로 jquery 객체를 .find() 함수에 인자로 넣을 수 있습니다. 아래와 같은 방법으로 해보십시오.

var $allListElement = $('li');

$('li.item-ii').find($allListElement);

cs