【问题标题】:How to create a sub folder on Page?如何在页面上创建子文件夹?
【发布时间】:2016-11-29 10:28:59
【问题描述】:

我不知道如何处理这个问题。我希望能够做到以下几点: 我有一个链接到另一个页面的文件夹图标。当用户单击图标而不是转到页面时,文件夹图标下方会出现一个子文件夹,当用户单击这些文件夹之一时,它会将用户定向到页面。

以下是我原来做的:

<h4>
  <a href="CalMediConnect_DMgmt.cfm">
    <img src="images/folder-documents-icon32.jpg" alt="Custodial" class="float-left">
    &nbsp;Disease Management
  </a>
</h4> 
<br /><br />

更新

我尝试了以下方法,但似乎无法正常工作:

以下是脚本:

var tree = document.querySelectorAll('ul.tree a:not(:last-child)');
for(var i = 0; i < tree.length; i++) {
  tree[i].addEventListener('click', function(e) {
    var parent = e.target.parentElement;
    var classList = parent.classList;
    if(classList.contains("open")) {
      classList.remove('open');
      var opensubs = parent.querySelectorAll(':scope .open');
      for(var i = 0; i < opensubs.length; i++) {
        opensubs[i].classList.remove('open');
      }
    } else {
      classList.add('open');
    }
  });
}

以下是CSS:

ul.tree li {
  list-style-type: none;
  position: relative;
}

ul.tree li ul {
  display: none;
}

ul.tree li.open > ul {
  display: block;
}

ul.tree li a {
  color: #4284B0;
  text-decoration: none;
}

ul.tree li a:before {
  height: 1em;
  padding: .1em;
  font-size: .8em;
  display: block;
  position: absolute;
  left: -1.3em;
  top: .2em;
}
.margin-left {
  margin-left: -15px;
}

还有 HTML:

<ul class="tree margin-left">
  <li>
    <h4>
      <a href="#">
        <img src="images/folder-documents-icon32.jpg" alt="Custodial" class="float-left">
        &nbsp;Disease Management
      </a>
    </h4>
    <ul>
      <li>
        <h5>
          <a href="CalMediConnect_DMgmt.cfm">
            <img src="images/folder-documents-icon32.jpg" alt="Custodial" class="float-left">
            &nbsp;Disease Management
          </a>
        </h5>
      </li>
    </ul>
  </li> 
</ul>

任何帮助将不胜感激。

【问题讨论】:

标签: javascript html css


【解决方案1】:

这是一个使用 jQuery 构建的非常基本的示例...

https://jsfiddle.net/kennethcss/8b4e6o42/

$('.folder').on('click', function(e) {
  var folder = $(this).find('.sub-folder');

  if (e.target !== this) return;

  if(folder.hasClass('hidden')) {
    folder.removeClass('hidden');
  } else {
    folder.addClass('hidden');
  }
});
.folder {
  cursor: pointer;
}

.hidden {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>

<ul class="container">
  <li class="folder">Primary
    <ul class="sub-folder hidden">
      <li>Secondary</li>
      <li>Secondary</li>
      <li>Secondary</li>
    </ul>
  </li>
  <li class="folder">Primary
    <ul class="sub-folder hidden">
      <li>Secondary</li>
      <li>Secondary</li>
      <li>Secondary</li>
    </ul>
  </li>
  <li class="folder">Primary
    <ul class="sub-folder hidden">
      <li>Secondary</li>
      <li>Secondary</li>
      <li>Secondary</li>
    </ul>
  </li>
</ul>

当然,你可以随心所欲地设计;此示例仅演示如何构建 HTML、CSS 和 JS 以创建简单的文件夹式结构。

要点

https://gist.github.com/kennethcss/8db1dc3326917c77846e84d263beb67d

【讨论】:

  • 我也尝试过您的方法,并按照您的步骤和逻辑进行操作,但对我来说不起作用。我的意思是当我单击文件夹时,它不会展开。不知道我做错了什么
  • 您是否在浏览器中看到任何控制台错误? developers.google.com/web/tools/chrome-devtools/debug/console/…
  • 是的,我愿意。表示美元符号未被识别
  • 如果您在本地开发,可能会出现许多问题。正如您从 Fiddle 中看到的,这是一个工作示例,因此我的建议是确保您的环境设置正确,如果您使用此示例行对行,请确保您正在拉入 jQuery,最后,请注意复制和粘贴,通常很容易忽略重要的项目。
  • Yes I do. Says the dollar sign is not being recognized...在这种情况下,您可能需要引入 jQuery。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多