[์•„์ฝ”๋””์–ธ๋ฉ”๋‰ด] 3level accordion menu

2020. 3. 24. 18:56ยท๐ŸฃcodeLab

[์•„์ฝ”๋””์–ธ๋ฉ”๋‰ด] 3level accordionMenu

๋จผ์ € ๊ฒฐ๊ณผ.

 

์ฝ”๋“œ๋ฆฌ๋ทฐ.

1. slideDown() ์กฐ๊ฑด.

ํ•ด๋‹น a ํด๋ฆญ ์‹œ,

  1. a ๋ฐ”๋กœ ๋ฐ‘ ํ˜•์ œ ์š”์†Œ ul ์ด ์กด์žฌํ•˜๋ฉฐ,
  2. ul์ด ๋ณด์ด์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
$('a').on('click', function() {
  // 1. ul ์กด์žฌํ•˜๋ฉฐ, ul์ด ๋ณด์ด์ง€ ์•Š์•„์•ผํ•œ๋‹ค.
  if( $(this).next().is('ul') && !($(this).next().is(':visible')) ) {
    // console.log('slideDown');
    $(this).next().slideDown();
    return false;
  }
});

 

2. slideUp() ์กฐ๊ฑด

ํ•ด๋‹น aํด๋ฆญ ์‹œ,

  1. a ๋ฐ”๋กœ ๋ฐ‘ ํ˜•์ œ ์š”์†Œ ul์ด ์กด์žฌํ•˜๋ฉฐ,
  2. ul์ด ๋ณด์—ฌ์•ผํ•œ๋‹ค.
$('a').on('click', function() {
  // 2. ul ์กด์žฌํ•˜๋ฉฐ, ul์ด ๋ณด์—ฌ์•ผ๋‹ค.
  if( $(this).next().is('ul') && ($(this).next().is(':visible')) ) {
    // console.log('slideUp');
    $(this).next().slideUp();
    return false;
  }
});

 

๊ฒฐ๊ณผ.

$('a').on('click', function() {
  // 1. ul ์กด์žฌํ•˜๋ฉฐ, ul์ด ๋ณด์ด์ง€ ์•Š์•„์•ผํ•œ๋‹ค.
  if( $(this).next().is('ul') && !($(this).next().is(':visible')) ) {
    // console.log('slideDown');
    $(this).next().slideDown();
    reuturn false;
  }
  
  // 2. ul ์กด์žฌํ•˜๋ฉฐ, ul์ด ๋ณด์—ฌ์•ผ๋‹ค.
  if( $(this).next().is('ul') && ($(this).next().is(':visible')) ) {
    // console.log('slideUp');
    $(this).next().slideUp();
    return false;
});

 

์ถ”๊ฐ€ ์กฐ๊ฑด.

Q. slideDown() ๋œ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ a ํด๋ฆญ ์‹œ,

๋ˆŒ๋ €๋˜ ul์€ slideUp() ๋˜๊ณ  ๋ˆ„๋ฅธ ul์€ slideDown() ๋  ์ˆ˜ ์—†์„๊นŒ?

if( $(this).next().is('ul') && !$(this).next().is(':visible')) ) {
  // slideDown
  // ul ์ค‘์— $('ul')
  // ๋‚ด๊ฐ€ ํด๋ฆญํ–ˆ๋˜ ๊ฒƒ ๋ง๊ณ  $('ul').not($(this).next())
  // slideUp
  $('.menu ul').not($(this).next()).slideUp();
}

 

โ—๏ธ์ฃผ์˜ํ•ด์•ผ ํ•  ์ 1.

ul ์ค‘์— $('ul') ์ด ์•„๋‹ˆ๋ผ $(.menu ul)์ด๋‹ค.

$('ul')๋กœ ํ•  ๊ฒฝ์šฐ, ul.menu ๋„ ๊ฐ™์ด ์‚ฌ๋ผ์ ธ ๋ฒ„๋ฆฌ๊ธฐ๋•Œ๋ฌธ.

 

โ—๏ธ์ฃผ์˜ํ•ด์•ผ ํ•  ์ 2.

ํด๋ž˜์Šค์™€ ํƒ์ƒ‰ ์„ ํƒ์ž๋ฅผ ๋„ฃ์–ด ๋ช…ํ™•ํžˆ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. (๋‹ค๋ฅธ ์š”์†Œ์™€ ์ด๋ฒคํŠธ๊ฐ€ ๊ผฌ์—ฌ๋ฒ„๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค.)

$('.menu ul').not($(this.next().parentsUntil('.menu')).slideUp()

parentsUntil() :: ์„ ํƒํ•œ ์š”์†Œ์˜ ์ƒ์œ„ ์š”์†Œ ์ค‘์—์„œ ์ง€์ •ํ•œ ์„ ํƒ์ž์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ ๋ฐ”๋กœ ์ด์ „๊นŒ์ง€์˜ ์š”์†Œ๋ฅผ ๋ชจ๋‘ ์„ ํƒํ•œ๋‹ค.

 

if( $(this).next().is('ul') && !$(this).next().is(':visible')) ) {
  $('.menu ul').not($(this).next().parentsUntil('.menu')).slideUp();
}

 

 

 

 

a ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ul ($(this).next())์ด ๋ณ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ž๊พธ ์žŠ๋Š”๋‹ค. ๊ณ„์† ์ธ์‹ํ•˜๊ณ  ์ƒ๊ฐํ•˜๋ฉด์„œ ์ฝ”๋“œ ์งœ์ž๐Ÿ”ฅ

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐ŸฃcodeLab' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • var flag = false ํ•ด์ฃผ๋Š” ์ด์œ 
  • rollingSlide ๋งŒ๋“ค๊ธฐ
  • [form] form ์ •๊ทœ์‹์—๋งž์ถฐ์ž‘์„ฑํ•˜๊ธฐ
  • [์Šฌ๋ผ์ด๋“œ] prpend / append ์‚ฌ์šฉํ•˜์—ฌ ์Šฌ๋ผ์ด๋“œ๋งŒ๋“ค๊ธฐ
jmjm
jmjm
  • jmjm
    /* jmjmjm */
    jmjm
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (133)
      • ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY (95)
        • HTML (9)
        • CSS (25)
        • SASS (4)
        • JavaScript (17)
        • jQuery (9)
        • Publishing (8)
        • Git (11)
        • React (10)
        • Vue (0)
        • ์›น์ ‘๊ทผ์„ฑ (1)
        • Gulp (1)
      • ๐ŸฃcodeLab (27)
      • ๐ŸŒˆetc (8)
      • ๐Ÿฅฐ ์ผ์ƒ (2)
      • ๐ŸŒŸ์ฝ์–ด๋ณด๊ธฐ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    sass
    ์›น์ ‘๊ทผ์„ฑ
    javascript ์ปฌ๋ ‰์…˜
    react import export
    javascript ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น
    ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น ์ข…๋ฅ˜
    javascript htmlcollection
    HTML Form
    CSS ์„ ํƒ์ž
    ์ ‘๊ทผ์„ฑ ์ฃผ์˜์‚ฌํ•ญ
    css flex
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹๋ฌธ
    ํ˜•์ œ์ธ์ ‘์ž
    sticky codepen
    css ํ˜•์ œ์ธ์ ‘์ž ์•ˆ๋ผ์š”
    sticky jsfiddle
    ์•„์ฝ”๋””์–ธ๋ฉ”๋‰ด
    ํ˜•์ œ์ธ์ ‘์ž display none
    javascript nodelist
    html collection
    sass compiler
    javascript htmlcollection nodelist
    css ๊ฐ€์ƒ์„ ํƒ์ž
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ slideup
    ํ˜•์ œ์ธ์ ‘์ž ์•ˆ๋˜๋Š” ์ด์œ 
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น
    vscode ๋‹จ์ถ•ํ‚ค
    sticky ํ™œ์šฉ
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ปฌ๋ ‰์…˜
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹ ๋ฌธ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
jmjm
[์•„์ฝ”๋””์–ธ๋ฉ”๋‰ด] 3level accordion menu
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”