Jquery onClick、loop-thru-divs和toggle用于目录探索
我基本上使用一个自定义界面来显示和隐藏目录树中的项。id仅在其为文件夹时分配给元素,并且所有文件夹内容(其他元素)的名称与父元素的id相同。现在显示隐藏作为同伴工作:Jquery onClick、loop-thru-divs和toggle用于目录探索,jquery,onclick,each,Jquery,Onclick,Each,我基本上使用一个自定义界面来显示和隐藏目录树中的项。id仅在其为文件夹时分配给元素,并且所有文件夹内容(其他元素)的名称与父元素的id相同。现在显示隐藏作为同伴工作: $(".directory-item").click(function () { $('div[name=' + this.id + ']').toggle(); }); 这是伟大的作品,除了现在我需要折叠子文件夹或子文件夹点击。因此,代码需要类似于: $(".directory-item").click(functio
$(".directory-item").click(function () {
$('div[name=' + this.id + ']').toggle();
});
这是伟大的作品,除了现在我需要折叠子文件夹或子文件夹点击。因此,代码需要类似于:
$(".directory-item").click(function () {
$('div[name=' + this.id + ']').toggle();
$('div[name=' + this.id + ']').each(function(){
var each_id = this.id; //NEW ID FROM .each NOT .click
$('div[name=' + each_id + ']').toggle();
});
});
当然,这并不能解释所需的递归。lond story short,扩展文件夹很棒。。。但是,如果收缩打开了子文件夹的文件夹,它们将保持打开状态
HTML/RAZOR:
<div class="folder-explorer">
@{
var parentFolder = "";
}
@for (int i = 0; i < ViewBag.fullHierarchy.Count; i++) {
var item = ViewBag.fullHierarchy[i];
//Set Previous item when applicable
int indent_level = (item.Level - 1) * 25 + 10;
string display = "";
string item_type = item.Type;
string icon_type = "";
var item_name = "";
var item_id = "";
//Set item visibility
if (item.Level == 1) {
display = "block";
}
else {
display = "none";
}
//Set item icon
if (item_type == "folder") {
icon_type = "fa-folder";
}
else {
icon_type = "fa-file";
}
//Always assign ID, only if its a folder
if (item_type == "folder") {
item_id = item.ItemName;
}else {
item_id = "";
}
//Set item name to parent folder
if (item.Level > 1) {
var previous_item = ViewBag.fullHierarchy[i - 1];
item_name = item.Parent;
if (item.Level > previous_item.Level) {
@:<div name="@item_name">
}
else if (item.Level < ViewBag.fullHierarchy.Count) {
var next_item = ViewBag.fullHierarchy[i + 1];
if (item.Level < next_item.Level) {
@:</div>
}
}
}
<div class="directory-item" id="@item_id" name="" style="padding-left: @(indent_level)px; display: @(display)">
<i class="fa @icon_type"></i>
@item.ItemName (id: @item_id, name: @item_name, level: @item.Level)
<i class="fa fa-angle-right float-right"></i>
</div>
}
</div>
我真正想做的是:点击,显示/隐藏下一个关卡。它本质上是一个目录浏览器。我让它用于扩展,但当我点击Hirr up时,子级别不会崩溃,所以我决定尝试将每组孩子包装在一个以其父母命名的div中。。。但这似乎并不容易。您确实需要提供一个HTML示例(从浏览器输出),以便轻松生成模型。添加了更多代码。
public void FullDirList(DirectoryInfo d) {
count_hierarchy += 1;
int directory_level = count_hierarchy;
// Console.WriteLine("Directory {0}", dir.FullName);
// list the files
try {
foreach (FileInfo f in d.GetFiles()) {
//Console.WriteLine("File {0}", f.FullName);
files.Add(f);
HierarchyItem file = new HierarchyItem();
file.ItemName = f.Name;
file.Type = "file";
file.Level = directory_level;
var dirName = new DirectoryInfo(f.Directory.ToString()).Name;
file.Parent = dirName.ToString();
fullHierarchy.Add(file);
}
}
catch {
Console.WriteLine("Directory {0} \n could not be accessed!!!!", d.FullName);
return; // We alredy got an error trying to access dir so dont try to access it again
}
// process each directory
// If I have been able to see the files in the directory I should also be able
// to look at its directories so I dont think I should place this in a try catch block
foreach (DirectoryInfo e in d.GetDirectories()) {
folders.Add(e);
HierarchyItem file = new HierarchyItem();
file.ItemName = e.Name;
file.Type = "folder";
file.Level = directory_level;
file.Parent = e.Parent.ToString();
fullHierarchy.Add(file);
FullDirList(e);
}
count_hierarchy -= 1;
}