- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试了在互联网上找到的各种列表,但似乎都无法正常工作。我认为原因可能是列表的内容是动态加载的(使用 JQuery ajax)。
在 $(document).ready
上,我加载列表并将 html 数据附加到 div
。
之后,我尝试使列表可折叠(列表是嵌套的,它是数据库的导航)。
到目前为止我最好的尝试:
function loadNavigation() {
var _url = "http://api.writeplace.nl/idofnavigation
var credentials = btoa("username:password!");
$.ajax({
headers: {
"Authorization": "Basic " + credentials
},
url: _url,
success: function(data, text) {
//console.log(data);
$("#container").empty();
$("#container").append(data);
$("#nav > li > ul ").addClass("verberg");
$("#nav > li > ul > li > ul").addClass("verberg");
}
});
}
function loadPage(documentId) {
if (!documentId) {
documentId = "document-id";
}
var _url = "http://api.writeplace.nl/=" + documentId;
var credentials = btoa("username:password!");
$.ajax({
headers: {
"Authorization": "Basic " + credentials
},
url: _url,
success: function(data, text) {
$("#tekst").empty();
$("#tekst").append(data);
}
});
}
function uitvouwen(){
function uitvouwen1(){
$("#container").on("click", "#nav > li", function(){
$(this).children().toggleClass("verberg");
//console.log("khbvdkvbedkvbewdkvfjbwekbfwkdjbvkejdbv");
});
}
function uitvouwen2(){
$("#container").on("click", "#nav > li > ul > li", function(){
$(this).children().toggleClass("verberg");
//console.log("gffhgfhh");
});
}
uitvouwen2();
uitvouwen1();
}
导航已加载,最上面的 ul
的 ID 为 nav
。在 document.ready
上,我将类 hide
添加到 #nav>li>ul
和 #nav>li>ul>li> ul
,因此 li
项默认设置为隐藏。然而,此列表的问题在于,如果您单击树中的链接或更深的 li
项目,它也会将其注册为对上面级别的单击。
有办法解决这个问题吗?或者更好(更干净)的方法来制作具有动态内容的可折叠嵌套列表?
最佳答案
这是我将如何执行此操作的示例。我使用了data-id
。属性。当将功能分配给菜单时,这会派上用场。您始终可以使用 ids 向下或向上移动。它通过查找包含数据属性
的祖先或自身来隐藏/显示UL
。
$(document).ready(function() {
$("#nav").html(loadnavigation(menu, null)); //to load the li items//
$("#container").click(function(e){
//e refers to the click event.
//bind it
var eventTarget = $(e.target);
//we need to use closest here. If you append other HTML-elements to the li, eventTarget
//will refer to these elements. This way, it always travels up to the
//closest ancestor with an data-id attribute.
eventTarget.closest("li[data-id]").children("ul").toggleClass("hide"); //find the closest ancestor (or self) that has data-id and hide its ul.
});
});
//below is my own code just to show an example of my comment:
//I'm using a array, combined with objects to build the basic structure of the menu.
var menu = [{
name: "list 1",
menu: [{
name: "sublist 1"
}, {
name: "sublist 2"
}]
}, {
name: "list 2",
menu: [{
name: "sublist 1",
menu: [{
name: "sublist 1"
}, {
name: "sublist 2"
}]
}, {
name: "sublist 2"
}]
}, {
name: "list 3"
}];
function loadnavigation(obj, dataID) {
var html = ""; //using var here is important. We want this variable to be private and within the scope of only this function.
//this will be a recursive function.
for (var i = 0; i < obj.length; i++) {
var id = i;
if (dataID != null || dataID != undefined) //we start the function at first with value null.
{
id = dataID + "-" + id; //separate id's from eachother with a dash
}
var menuItem = '<li data-id="' + id + '">';
menuItem += obj[i].name; //append the menu name with +=
if (obj[i].menu) //obj has submenu
{
menuItem += "<ul class='hide'>" + loadnavigation(obj[i].menu, id) + "</ul>";
}
menuItem += "</li>"; //close
html += menuItem;
}
return html;
}
ul.hide {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<ul id="nav">
</ul>
</div>
代码应该能够 self 解释。
为什么我觉得data-attribute
很方便:
$("li[data-id^='1-']")
上面的选择器将选择属于以 id 1 开头的 Twig 的所有子项。
关于javascript - 具有动态加载内容的可折叠列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31760560/
我正在尝试创建一个无序列表,其中每个 包含另一个无序列表。我想要触发子菜单向下滑动的列表项有类 mobile-collapse子菜单有类 mobile-drop-menu 。这是我的 jquery 代
我使用 PMD检查我的代码。在大多数情况下,它给了我非常有用的提示,但我无法弄清楚在以下情况下可以改进什么。 原始代码如下所示: if ((getSomething() != null && getS
需要一些 jquery/js/jsp 功能的帮助.. 我有一个可折叠的表格脚本: (function($){ $.fn.extend({ setupCollapstable: funct
我使用 CSS 和 Javascript 创建了一个 Accordion ,但我不知道如何在选择不同的 Accordion 后折叠打开的 Accordion 。我试过在 Javascript 中使用可
我使用 CSS 和 JS 编写了一个可折叠按钮,我想将一个按钮嵌套在另一个按钮中。 是否可以动态调整第一个/外部按钮的高度,以便在打开第二个/内部按钮时,第一个按钮的高度增加第二个按钮的高度? 这是我
我正在使用 jQuery 创建一个导航系统。我想要实现的是在页面加载时显示父元素并隐藏子元素。我做得非常简单。 然而,当我在其他父元素之间切换时,我希望能够隐藏之前的子元素,以便我只能打开一个 一次。
我正在尝试匹配这个设计 点击卡片应该展开 我不能用卡片包裹扩展 block ,因为扩展 block 基本上只有一行,我试着按照这个例子 flutter_catalog 我在谷歌上搜索了很多,但找不到我
我正在尝试切换 div 以使其可见/隐藏。我正在制作一个排行榜,我想打开它,但只能在单击时打开。 test fu
我正在使用 Materialize CSS 并使用可折叠的 Accordion 式元素 ( http://materializecss.com/collapsible.html )。 出于某种原因,当
我有一个递归 TreeView ,它从数据库中提取所有信息,并且想了解如何使其可折叠。我尝试使用 Jquery 和 Javascript,但都没有任何效果。不确定是我的错误还是其他原因。 这是我的基本
我收到异常“可折叠 if 语句”。 通过以下代码中的 Sonar 。 if(getSomething().equals(getSomething()){ if(getsomehing.contai
我正在制作 Accordion 以在 Angular 应用程序中使用 javascript 制作可折叠的 div.. 为此,如果单击Parent One 或任何其他父名称上的按钮未打开它.. HTML
我正在将 Ant Design 与 React 一起使用。 Ant Design 有一个菜单组件:https://ant.design/components/menu/ 是否可以使菜单不可折叠/展开?
我想展示这个可折叠 Accordion 的第一个元素。我在互联网上做了一些研究,但徒劳无功 Aller au dossier personnel
考虑以下 foldMap 的签名 foldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m 这与“绑定(bind)”非常相似,只是交换了参数:
使用“fieldsets”,您可以通过指定 CSS 类“collapse”使其可折叠。如何对“内联”做同样的事情?谢谢! 最佳答案 在 Django 1.10+ 中: class MyModelInl
有人已经用 YUI dataTable 制作了如下示例的脚本吗? 示例: http://extjs.com/deploy/dev/examples/tree/column-tree.html http
好吧,有些事情很奇怪,我无法弄清楚。假设我有一些类别,每个类别都有一些项目,全部放入字典中。 import wx nyoom = {} nyoom['spiders'] = ['Yellow Sac'
我正在尝试实现一种可折叠的 StackLayout。每次用户单击按钮时,它都会展开或折叠堆栈布局以显示/隐藏更多详细信息。 我能够通过下面的代码实现更多/更少的效果,但它看起来不对而且效果也不是很好,
我的布局包含顶部的水平 recyclerView 和 viewPager。 ViewPager 在其每个选项卡中都有一个 recyclerView。 我想在用户滚动布局时折叠顶部水平回收器 View
我是一名优秀的程序员,十分优秀!