редактируемый аккордеон

221
14 ноября 2019, 00:50

Делаю меню-выпадающий список. Должна быть возможность редактирования текста поля меню (его названия).

<ul class="cd-accordion-menu animated">
    <li class="has-children">
        <input type="checkbox"  name ="group-1" id="group-1" checked>
        <label for="group-1" id="t1" >Group 1</label>

Если добавить свойство contenteditable для label, то меню не разворачивается. Какими способами можно реализовать нужный функционал?

весь код:

jQuery(document).ready(function(e) { 
      var accordionsMenu = $('.cd-accordion-menu'); 
      if (accordionsMenu.length > 0) { 
        accordionsMenu.each(function() { 
            var accordion = $(this); 
            accordion.on('change', 'input[type="checkbox"]', function() { 
                (checkbox.prop('checked')) ? 
                checkbox.siblings('ul').attr('style', 'display:none;').slideDown(300): 
                  checkbox.siblings('ul').attr('style', 'display:block;').slideUp(300); 
              } 
            }); 
        }); 
    }
*, 
*::after, 
*::before { 
  box-sizing: border-box; 
} 
 
html { 
  font-size: 62.5%; 
} 
 
body { 
  font-size: 1.6rem; 
  font-family: "Jaldi", sans-serif; 
  color: #ffffff; 
  background-color: #a0f6aa; 
  -webkit-font-smoothing: antialiased; 
  -moz-osx-font-smoothing: grayscale; 
} 
 
a { 
  color: #a0b0f6; 
  text-decoration: none; 
} 
 
h1 { 
  text-align: center; 
  width: 90%; 
  margin: 2em auto 0; 
  font-size: 2.4rem; 
  color: #507b55; 
  font-weight: bold; 
} 
 
@media only screen and (min-width: 600px) { 
  h1 { 
    font-size: 3.2rem; 
  } 
} 
 
input { 
  font-family: "Jaldi", sans-serif; 
  font-size: 1.6rem; 
} 
 
.cd-accordion-menu { 
  width: 90%; 
  max-width: 600px; 
  background: #4d5158; 
  margin: 4em auto; 
  box-shadow: 0 4px 40px #70ac76; 
} 
 
.cd-accordion-menu ul { 
  display: none; 
} 
 
.cd-accordion-menu li { 
  -webkit-user-select: none; 
  -moz-user-select: none; 
  -ms-user-select: none; 
  user-select: none; 
} 
 
.cd-accordion-menu input[type=checkbox] { 
  position: absolute; 
  opacity: 0; 
} 
 
.cd-accordion-menu label, 
.cd-accordion-menu a { 
  position: relative; 
  display: block; 
  padding: 18px 18px 18px 64px; 
  background: #4d5158; 
  box-shadow: inset 0 -1px #555960; 
  color: #ffffff; 
  font-size: 1.6rem; 
} 
 
.no-touch .cd-accordion-menu label:hover, 
.no-touch .cd-accordion-menu a:hover { 
  background: #52565d; 
} 
 
.cd-accordion-menu label::before, 
.cd-accordion-menu label::after, 
.cd-accordion-menu a::after { 
  content: ''; 
  display: inline-block; 
  width: 16px; 
  height: 16px; 
  position: absolute; 
  top: 50%; 
  -webkit-transform: translateY(-50%); 
  -moz-transform: translateY(-50%); 
  -ms-transform: translateY(-50%); 
  -o-transform: translateY(-50%); 
  transform: translateY(-50%); 
} 
 
.cd-accordion-menu label { 
  cursor: pointer; 
} 
 
.cd-accordion-menu label::before, 
.cd-accordion-menu label::after { 
  background-image: url(../img/cd-icons.svg); 
  background-repeat: no-repeat; 
} 
 
.cd-accordion-menu label::before { 
  left: 18px; 
  background-position: 0 0; 
  -webkit-transform: translateY(-50%) rotate(-90deg); 
  -moz-transform: translateY(-50%) rotate(-90deg); 
  -ms-transform: translateY(-50%) rotate(-90deg); 
  -o-transform: translateY(-50%) rotate(-90deg); 
  transform: translateY(-50%) rotate(-90deg); 
} 
 
.cd-accordion-menu label::after { 
  left: 41px; 
  background-position: -16px 0; 
} 
 
.cd-accordion-menu a::after { 
  left: 36px; 
  left: 6px; 
} 
 
.cd-accordion-menu input[type=checkbox]:checked+label::before { 
  -webkit-transform: translateY(-50%); 
  -moz-transform: translateY(-50%); 
  -ms-transform: translateY(-50%); 
  -o-transform: translateY(-50%); 
  transform: translateY(-50%); 
} 
 
.cd-accordion-menu input[type=checkbox]:checked+label::after { 
  background-position: -62px 0; 
} 
 
.cd-accordion-menu input[type=checkbox]:checked+label+ul, 
.cd-accordion-menu input[type=checkbox]:checked+label:nth-of-type(n)+ul { 
  display: block; 
} 
 
.cd-accordion-menu ul label, 
.cd-accordion-menu ul a { 
  background: #35383d; 
  box-shadow: inset 0 -1px #41444a; 
  padding-left: 82px; 
} 
 
.no-touch .cd-accordion-menu ul label:hover, 
.no-touch .cd-accordion-menu ul a:hover { 
  background: #3c3f45; 
} 
 
.cd-accordion-menu>li:last-of-type>label, 
.cd-accordion-menu>li:last-of-type>a, 
.cd-accordion-menu>li>ul>li:last-of-type label, 
.cd-accordion-menu>li>ul>li:last-of-type a { 
  box-shadow: none; 
} 
 
.cd-accordion-menu ul label::before { 
  left: 36px; 
} 
 
.cd-accordion-menu ul label::after, 
.cd-accordion-menu ul a::after { 
  left: 59px; 
} 
 
.cd-accordion-menu ul ul label, 
.cd-accordion-menu ul ul a { 
  padding-left: 100px; 
} 
 
.cd-accordion-menu ul ul label::before { 
  left: 54px; 
} 
 
.cd-accordion-menu ul ul label::after, 
.cd-accordion-menu ul ul a::after { 
  left: 77px; 
} 
 
.cd-accordion-menu ul ul ul label, 
.cd-accordion-menu ul ul ul a { 
  padding-left: 118px; 
} 
 
.cd-accordion-menu ul ul ul label::before { 
  left: 72px; 
} 
 
.cd-accordion-menu ul ul ul label::after, 
.cd-accordion-menu ul ul ul a::after { 
  left: 95px; 
} 
 
@media only screen and (min-width: 600px) { 
  .cd-accordion-menu label, 
  .cd-accordion-menu a { 
    padding: 24px 24px 24px 52px; 
    font-size: 1.9rem; 
  } 
  .cd-accordion-menu label::before { 
    left: 24px; 
  } 
  .cd-accordion-menu label::after { 
    left: 53px; 
  } 
  .cd-accordion-menu ul label, 
  .cd-accordion-menu ul a { 
    padding-left: 76px; 
  } 
  .cd-accordion-menu ul label::before { 
    left: 48px; 
  } 
  .cd-accordion-menu ul label::after, 
  .cd-accordion-menu ul a::after { 
    left: 77px; 
  } 
  .cd-accordion-menu ul ul label, 
  .cd-accordion-menu ul ul a { 
    padding-left: 100px; 
  } 
  .cd-accordion-menu ul ul label::before { 
    left: 72px; 
  } 
  .cd-accordion-menu ul ul label::after, 
  .cd-accordion-menu ul ul a::after { 
    left: 11px; 
  } 
  .cd-accordion-menu ul ul ul label, 
  .cd-accordion-menu ul ul ul a { 
    padding-left: 124px; 
  } 
  .cd-accordion-menu ul ul ul label::before { 
    left: 96px; 
  } 
  .cd-accordion-menu ul ul ul label::after, 
  .cd-accordion-menu ul ul ul a::after { 
    left: 125px; 
  } 
} 
 
.cd-accordion-menu.animated label::before { 
  -webkit-transition: -webkit-transform 0.3s; 
  -moz-transition: -moz-transform 0.3s; 
  transition: transform 0.3s; 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
<ul class="cd-accordion-menu animated"> 
  <li class="has-children"> 
    <input type="checkbox" name="group-1" id="group-1" checked> 
    <label for="group-1" id="t1">Group 1</label> 
    <ul> 
      <li class="has-children"> 
        <input type="checkbox" name="sub-group-1" id="sub-group-1"> 
        <label for="sub-group-1">Sub Group 1</label> 
        <ul> 
          <li><a>Text</a></li> 
          <li><a>Text</a></li> 
        </ul> 
      </li> 
    </ul> 
  </li> 
  <li class="has-children"> 
    <input type="checkbox" name="group-2" id="group-2"> 
    <label for="group-2">Group 2</label> 
    <ul> 
      <li><a>Text</a></li> 
      <li><a>Text</a></li> 
    </ul> 
  </li> 
</ul>

READ ALSO
сохранение результата выборки в mysql

сохранение результата выборки в mysql

создал следующий запрос

191
Как выделить активную ссылку в меню другим цветом при нажатии?

Как выделить активную ссылку в меню другим цветом при нажатии?

Подскажите как выделить активную ссылку в меню другим цветом при нажатии? Есть меню в html на странице следующего вида:

176
Роль оператора using

Роль оператора using

Вопрос по поводу оператора usingПочему когда я пишу так, то в файл ничего не пишется

155
Не меняется значение контента с помощью триггера

Не меняется значение контента с помощью триггера

Имеется код пагинатора, который должен при контенте с значением 0 сделать кнопку неактивной, а так же установить контент кнопки как

142