如果选中保持列表手风琴打开

时间:2014-04-11 15:33:50

标签: jquery accordion

我为一个菜单制作了一个非常简单的手风琴。只有一件事我无法上班。

简而言之:手风琴的正常状态已经关闭。我打开其中一个手风琴并勾选一个复选框。然后页面刷新,手风琴返回到关闭状态。因此,我需要检查是否已选中任何复选框,然后默认情况下再次“重新打开”它。

所以我拥有的是:

HTML

<ul id="accordion">
  <li class="active">
     <ul style="display: block;">
        <li class="filter-item clearfix">
          <input type="checkbox" checked="checked" value="20883" name="filter[]" id="filter_20883">
          <label for="filter_20883"><span></span>H0</label>
        </li>
      </ul>
     </li>
   </ul>
 <ul id="accordion">
  <li class="active"><a href="#"><span>Strom</span><span class="close-open"></span></a>
    <ul style="display: block;">
      <li class="filter-item clearfix">
         <input type="checkbox" value="20887" name="filter[]" id="filter_20887">
         <label for="filter_20887"><span></span>Wechselstrom</label>
      </li>
      <li class="filter-item clearfix">
         <input type="checkbox" value="20888" name="filter[]" id="filter_20888">
         <label for="filter_20888"><span></span>Gleichstrom</label>
       </li>
     </ul>
    </li>
   </ul>

JQUERY

$('#accordion > li > a').click(function() {

      var checkElement = $(this).next();

      $(this).closest('li').addClass('active');

      if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
        $(this).closest('li').removeClass('active');
        checkElement.slideUp('normal');
      }

      if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
        $(this).closest('li').addClass('active');
        checkElement.slideDown('normal');
      }

      if($(this).closest('li').find('ul').children().length == 0) {
        return true;
      } else {
        return false;
      }

    });

有没有人有解决方案?或者这是错误的做法吗?

0 个答案:

没有答案
相关问题