【发布时间】:2015-10-23 23:34:24
【问题描述】:
我尝试了在互联网上找到的各种列表,但似乎没有一个能正常工作。我认为原因可能是列表的内容是动态加载的(使用 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-attribute来做到这一点。 -
为了进一步帮助您,我们需要更多代码。列表的 HTML 和函数
loadnavigation。您能否更新您的 sn-p 使其适用于您拥有的基本版本? -
感谢您的回答!我已经用 j-query 的其余部分更新了 sn-p。有什么方法可以用我的 jquery 文件添加路径控制吗? (我没有访问原始服务器文件的权限,其他人正在管理这些文件)
-
是的,您可以,当添加元素时,您可以控制它。你能发布渲染的输出吗?
-
jsfiddle.net/pr95mq6f/1 将所有内容上传到 jsfiddle 似乎有问题,链接显示的 jquery 站点无法正常工作,我会尝试修复它
标签: javascript jquery ajax nested-lists dynamic-content