λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ‘©πŸ»‍πŸ’»STUDY/jQuery

[jQuery] ν•„ν„°λ§λ©”μ†Œλ“œ first() last() eq() filter() not() has() is() map() slice()

λ°˜μ‘ν˜•

[jQuery] ν•„ν„°λ§λ©”μ†Œλ“œ

필터링 λ©”μ†Œλ“œ .first() .last() .eq() .filter() .not() .has() .is() .map() .slice()

좜처 :: 필터링 λ©”μ†Œλ“œ .first() .last() .eq() .filter() .not() .is()

  • 필터링(filtering)λ©”μ†Œλ“œ

    • DOMνŠΈλ¦¬μ—μ„œ μ„ νƒν•œ μš”μ†Œλ₯Ό ν•„ν„°λ§ν•˜κΈ° μœ„ν•œ λ©”μ†Œλ“œλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

      λ©”μ†Œλ“œ μ„€λͺ…
      .first() μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 첫 번째 μš”μ†Œλ₯Ό 선택함.
      .last() μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό 선택함.
      .eq() μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 전달받은 μΈλ±μŠ€μ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œλ₯Ό 선택함.
      .filter() μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 전달받은 μ„ νƒμžμ— ν•΄λ‹Ήν•˜κ±°λ‚˜,
      ν•¨μˆ˜ 호좜의 κ²°κ³Όκ°€ μ°Έ(true)인 μš”μ†Œλ₯Ό λͺ¨λ‘ 선택_함.
      .not() μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 전달받은 μ„ νƒμžμ— ν•΄λ‹Ήν•˜κ±°λ‚˜,
      ν•¨μˆ˜ 호좜의 κ²°κ³Όκ°€ μ°Έ(true)인 μš”μ†Œλ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ μš”μ†Œλ₯Ό λͺ¨λ‘ 선택함.
      .has() μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 전달받은 μ„ νƒμžμ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œλ₯Ό μžμ†μš”μ†Œλ‘œ 가지고 μžˆλŠ” μš”μ†Œλ₯Ό λͺ¨λ‘ 선택함.
      .is() μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 전달받은 μ„ νƒμžμ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œκ°€ ν•˜λ‚˜λΌλ„ μ‘΄μž¬ν•˜λ©΄ μ°Έ(true)을 λ°˜ν™˜.
      .map() μ„ νƒν•œ μš”μ†Œ μ§‘ν•©μ˜ 각 μš”μ†Œλ§ˆλ‹€ μ½œλ°±ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜κ³ , κ·Έ λ°˜ν™˜κ°’μœΌλ‘œ κ΅¬μ„±λœ jQuery 객체λ₯Ό λ°˜ν™˜.
      .slice() μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 전달받은 인덱슀 λ²”μœ„μ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œλ§Œμ„ 선택함.

     

 

1. first() λ©”μ†Œλ“œμ™€ last() λ©”μ†Œλ“œ

.first()λ©”μ†Œλ“œλŠ” μ„ νƒœκ°„ μš”μ†Œ μ€‘μ—μ„œ 첫 번째 μš”μ†Œκ°€ μ„ νƒλ˜κ³ ,

.last()λ©”μ†Œλ“œλŠ” λ§ˆμ§€λ§‰ μš”μ†Œκ°€ μ„ νƒλœλ‹€.

$('li').first().css('background-color', 'red');
$('li').last().css('background-color', 'yellow');

μœ„ 예제의 첫 번째 μš”μ†Œμ˜ CSS 속성이 "red"둜 μ„€μ •λ˜κ³  λ§ˆμ§€λ§‰ μš”μ†Œμ˜ CSS 속성이 "yellow"둜 μ„€μ •λœλ‹€.

 

 

2. eq() λ©”μ†Œλ“œ

.eq()λ©”μ†Œλ“œλŠ” μ„ νƒν•œ μš”μ†Œμ€‘μ—μ„œ 전달받은 μΈλ±μŠ€μ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€.

μΈλ±μŠ€λŠ” μ„ νƒλœ μš”μ†Œλ“€μ˜ 첫 번째 μš”μ†Œλ₯Ό 0으둜 놓고, μ•žμ—μ„œλΆ€ν„° κ²€μƒ‰λœλ‹€. μΈλ±μŠ€κ°€ 음수인 κ²½μš°μ—λŠ” μ„ νƒν•œ μš”μ†Œ μ§‘ν•©μ˜ 맨 λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό 인덱슀 -1둜 놓고 λ’€μ—μ„œλΆ€ν„° κ²€μƒ‰λœλ‹€.

$('li').eq(0).css('background-color', 'red');
$('lli').eq(-1).css('background-color', 'yellow');

μœ„ μ˜ˆμ œλŠ” μΈλ±μŠ€κ°€ 0에 ν•΄λ‹Ήν•˜λŠ” 첫 번째 μš”μ†Œμ˜ CSS 속성이 "red"둜 μ„€μ •λ˜κ³ , 인덱슀 -1에 ν•΄λ‹Ήν•˜λŠ” λ§ˆμ§€λ§‰ μš”μ†Œμ˜ CSS 속성이 "yellow"둜 μ„€μ •λœλ‹€.

 

 

3. filter() λ©”μ†Œλ“œ

.filter()λ©”μ†Œλ“œλŠ” μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 전달받은 μ„ νƒμžμ— ν•΄λ‹Ήν•˜κ±°λ‚˜, ν•¨μˆ˜ν˜ΈμΆœμ˜ κ²°κ³Όκ°€ μ°Έ(true)인 μš”μ†Œκ°€ λͺ¨λ‘ μ„ νƒλœλ‹€.

이 λ©”μ†Œλ“œλŠ” 인수둜 μ„ νƒμžλ‚˜ jQuery 객체, HTML DOM μš”μ†Œ 등을 전달받을 수 μžˆλ‹€.

λ˜ν•œ μš”μ†Œμ˜ μ§‘ν•©μ˜ 각 μš”μ†Œλ₯Ό 체크할 수 μžˆλŠ” ν•¨μˆ˜λ₯Ό 전달할 μˆ˜λ„ μžˆλ‹€.

$('li').filter(':odd').css('background-color', 'yellow');

μœ„ μ˜ˆμ œμ—μ„œ μ‚¬μš©λœ :odd μ„ νƒμžλŠ” μΈλ±μŠ€κ°€ ν™€μˆ˜μΈ μš”μ†Œλ₯Ό λͺ¨λ‘ μ„ νƒν•˜λŠ” μ„ νƒμžμ΄λ―€λ‘œ 두 λ²ˆμ§Έμ™€ λ„€ 번째 μš”μ†Œκ°€ μ„ νƒλœλ‹€.

μ—¬κΈ°μ„œ μ£Όμ˜ν•  점은 jQuery의 μΈλ±μŠ€λŠ” μ–Έμ œλ‚˜ 0λΆ€ν„° μ‹œμž‘ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

λ”°λΌμ„œ :odd λ‚˜ :evenμ„ νƒμžλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” μ–Έμ œλ‚˜ μΈλ±μŠ€κ°€ 0λΆ€ν„° μ‹œμž‘ν•œλ‹€λŠ” 사싀을 염두에 두고 μ‚¬μš©ν•΄μ•„ ν•œλ‹€.

 

 

4. not() λ©”μ†Œλ“œ

.not() λ©”μ†Œλ“œλŠ” μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 전달받은 μ„ νƒμžμ— ν•΄λ‹Ήν•˜κ±°λ‚˜, ν•¨μˆ˜ 호좜의 κ²°κ³Όκ°€ μ°Έ(true)인 μš”μ†Œλ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ μš”μ†Œκ°€ λͺ¨λ“œ μ„ νƒλœλ‹€.

즉, .filter()λ©”μ†Œλ“œμ™€λŠ” μ •λ°˜λŒ€λ‘œ λ™μž‘ν•˜μ—¬ μš”μ†Œκ°€ μ„ νƒλœλ‹€.

$('li').not(':odd').css('background-color', 'yellow');

μœ„ μ˜ˆμ œμ—μ„œ μ‚¬μš©λœ :oddμ„ νƒμžλŠ” μΈλ±μŠ€κ°€ ν™€μˆ˜μΈ μš”μ†Œλ₯Ό λͺ¨λ‘ μ„ νƒν•˜λŠ” μ„ νƒμžμ΄λ―€λ‘œ 두 λ²ˆμ§Έμ™€ λ„€λ²ˆμ§Έ μš”μ†Œμ˜ λ°˜λŒ€μΈ μ²«λ²ˆμ§Έμ™€ λ„€λ²ˆμ§Έ μš”μ†Œκ°€ μ„ νƒλœλ‹€.

 

 

5. has() λ©”μ†Œλ“œ

.has()λ©”μ†Œλ“œλŠ” μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 전달받은 μ„ νƒμžμ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œλ₯Ό ν•˜μœ„ μš”μ†Œλ‘œ 가지고 μžˆλŠ” μš”μ†Œκ°€ λͺ¨λ‘ μ„ νƒλœλ‹€.

$('li').has('b').css('background-color', 'yellow');

μœ„ μ˜ˆμ œλŠ” μ„ νƒν•œ <li> μš”μ†Œ μ€‘μ—μ„œ ν•˜μœ„ μš”μ†Œλ‘œ <b>μš”μ†Œλ₯Ό 가지고 μžˆλŠ” μš”μ†Œλ§Œμ˜ CSS 속성을 λ³€κ²½ν•œλ‹€.

<ul>
  <li>list item 1</li>
  <li>list item 2
  	<ul>
      <li>list item 2-a</li>
      <li>list item 2-b</li>
    </ul>
  </li>
  <li>list item 3</li>
  <li>list item 4</li>
</ul>
$('li').has('ul').css('background-color', 'red');
// list item 2-a , list-item 2-b 만 λ³€κ²½.

μœ„ μ˜ˆμ œλŠ” λΆ€λͺ¨μš”μ†ŒμΈ <ul>μ•ˆμ˜ <li>의 μš”μ†Œλ§Œ CSS 속성을 λ³€κ²½ν•œλ‹€.

 

 

6. is() λ©”μ†Œλ“œ

.is()λ©”μ†Œλ“œλŠ” μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 전달받은 μ„ νƒμžμ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œκ°€ ν•˜λ‚˜λΌλ„ μ‘΄μž¬ν•˜λ©΄ μ°Έ(true)을 λ°˜ν™˜ν•œλ‹€.

<ul>
  <li>μ—μŠ€ν”„λ ˆμ†Œ</li>
  <li><b>아메리카노</b></li>
  <li>μΉ΄νŽ˜λΌλ–Ό</li>
</ul>
<p></p>
if($('b').parents().is('ul')) {
  $('p').text('<b>μš”μ†Œμ˜ μƒμœ„ μš”μ†Œλ‘œ <ul>μš”μ†Œκ°€ μ‘΄μž¬ν•œλ‹€.')
}

μœ„ μ˜ˆμ œμ—μ„œ μš°μ„  μ„ νƒν•œ <b>μš”μ†Œμ˜ μƒμœ„μš”μ†Œλ₯Ό μ„ νƒν•˜μ—¬ , μ„ νƒλœ μƒμœ„ μš”μ†Œμ€‘μ— <ul>μš”μ†Œκ°€ μ‘΄μž¬ν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό .is()둜 μ²΄ν¬ν•˜κ³  μžˆλ‹€.

 

 

7. map() λ©”μ†Œλ“œ

.map()λ©”μ†Œλ“œλŠ” μ„ νƒν•œ μš”μ†Œ μ§‘ν•©μ˜ 각 μš”μ†Œλ§ˆλ‹€ μ§€μ •λœ μ½œλ°±ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜κ³ , κ·Έ λ°˜ν™˜κ°’μœΌλ‘œ κ΅¬μ„±λœ jQuery 객체λ₯Ό λ°˜ν™˜ν•œλ‹€.

<p><b>Value: </b></p>
<form>
  <input type="text" name="name" value="John">
  <input type="text" name="password" value="password">
  <input type="text" name="url" value="https://johnresig.com//">
</form>
$('p')
    .append($('input').map(function(){
      return $(this).val();
    })
    .get()
    .join(',') );

μœ„ μ˜ˆμ œλŠ” <p>μš”μ†Œμ— 각각의 <input> value의 값을 λ°˜ν™˜ν•˜λŠ” μ½œλ°±ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œλ‹€.

μ½œλ°±ν•¨μˆ˜μ˜ μ‹€ν–‰μœΌλ‘œ λ°˜ν™˜λ˜λŠ” 값듀은 .get()λ©”μ†Œλ“œλ₯Ό 톡해 λ°°μ—΄λ‘œ λ°˜ν™˜λ˜λ©°, λ‹€μ‹œ .join()λ©”μ†Œλ“œλ₯Ό 톡해 λ¬Έμžμ—΄λ‘œ λ°˜ν™˜λœλ‹€.

 

 

8. slice() λ©”μ†Œλ“œ

.slice()λ©”μ†Œλ“œλŠ” μ„ νƒν•œ μš”μ†Œ μ€‘μ—μ„œ 전달받은 인덱슀 λ²”μœ„μ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œλ§Œ μ„ νƒλœλ‹€.

<ul>
  <li>list item 1</li><!-- index : 0 -->
  <li>list item 2</li><!-- index : 1 -->
  <li>list item 3</li><!-- index : 2 -->
  <li>list item 4</li><!-- index : 3 -->
  <li>list item 5</li><!-- index : 4 -->
</ul>
$('li').slice(2).css('background-color', 'yellow');
$('li').slice(1, 3).css('border', '1px solid green');

μœ„ μ˜ˆμ œλŠ” 첫번째 μ€„μ—μ„œ μ„ νƒν•œ <li>μš”μ†Œ 쀑 본인포함 λ‚˜λ¨Έμ§€ 인덱슀λ₯Ό μ„ νƒν•˜κ³  (list-item 3 / list-item 4 / list-item 5) 선택.

μ•„λž˜ μ˜ˆμ œλŠ” .slice(λ³ΈμΈμΈλ±μŠ€ν¬ν•¨, μΈλ±μŠ€λ―Έν¬ν•¨) μ΄λ―€λ‘œ list-item 2 / list-item 3이 μ„ νƒλœλ‹€.

λ°˜μ‘ν˜•

'πŸ‘©πŸ»β€πŸ’»STUDY > jQuery' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[jQuery] click(), focusin() 이벀트 좩돌  (0) 2020.07.17
[jQuery] :visible 쑰건  (1) 2020.04.01
[jQuery] on() off() one()  (0) 2020.02.13
[jQuery] queue() & dequeue()  (0) 2020.02.07
[jQuery] ready() load() 차이  (0) 2020.02.05