jQuery展开/折叠表行在展开时不显示
jQuery Expand/Collapse table row not showing when expanded
我遇到的问题是在第二级,当第三级的子级有一个父级时,它之后的任何东西在第二层都不会出现,因为它得到了一个"display:none"属性而不是块。
创建了一个显示该问题的JSfiddle。
https://jsfiddle.net/du6oy7oy/4/
如果打开第一个父页,您可以看到父页2,在它之后还有另一个标题为"页面未显示"的页面,它与父页2处于同一级别,因此应该显示。
我不知道是什么原因导致
JS:
$(document).ready(function() {
function getChildren($row) {
var children = [], level = $row.attr('data-level');
while($row.next().attr('data-level') > level) {
children.push($row.next());
$row = $row.next();
}
return children;
}
function getChildrenOpen($row) {
var children = [], level = $row.attr('data-level');
level++;
while($row.next().attr('data-level') == level) {
children.push($row.next());
$row = $row.next();
}
return children;
}
$(document).on('click','.closed', function() {
$(this).removeClass('closed');
$(this).addClass('parent');
$(this).find(".fatoggle").removeClass('fa-plus');
$(this).find(".fatoggle").addClass('fa-minus');
$(this).find(".btntoggle").removeClass('btn-primary');
$(this).find(".btntoggle").addClass('btn-danger');
var children = getChildrenOpen($(this));
$.each(children, function() {
$(this).css('display','table-row');
})
});
$(document).on('click','.parent', function() {
$(this).removeClass('parent');
$(this).addClass('closed');
$(this).find(".fatoggle").addClass('fa-plus');
$(this).find(".fatoggle").removeClass('fa-minus');
$(this).find(".btntoggle").addClass('btn-primary');
$(this).find(".btntoggle").removeClass('btn-danger');
var children = getChildren($(this));
$.each(children, function() {
$(this).css('display','none');
$(this).removeClass('parent');
$(this).addClass('closed');
$(this).find(".fatoggle").addClass('fa-plus');
$(this).find(".fatoggle").removeClass('fa-minus');
$(this).find(".btntoggle").addClass('btn-primary');
$(this).find(".btntoggle").removeClass('btn-danger');
})
});
$(document).on('click','.parent a, .closed a',function(e) {
e.stopPropagation();
});});
简单文本层次结构:
- 页面
- 父页面
- 页面
- 页码
- 父页2
- 页面
- 页面未显示
- 页码
- 父页
- 页码
- 页面
打开子级的函数只在精确级别的元素之间迭代。这意味着它会达到你的2级,并在达到1级之前停止。
function getChildrenOpen($row) {
var children = [],
level = $row.attr('data-level');
level++;
while ($row.next().attr('data-level') >= level) {
if ($row.next().attr('data-level') == level) {
children.push($row.next());
}
$row = $row.next();
}
return children;
}
JSFiddle:https://jsfiddle.net/du6oy7oy/6/
相关文章:
- jQuery展开/折叠表行在展开时不显示
- 在php和jquery中显示隐藏展开的动态层次树结构
- 在HTML中隐藏、展开或显示列
- 展开/折叠显示一行,而隐藏其他行
- 仅当侧边栏完全展开时显示文本
- 一次只显示一个展开 javascript 使用切换显示内容
- 如何在可展开菜单中正确显示标题
- 加载网页后,在树视图中如何显示子/节点的展开和折叠
- 为什么 DIV 不展开以显示文本
- 展开表格行以显示更多数据
- 剑道树视图在展开时发出请求,但不显示返回的数据
- 在隐藏/显示动画时展开/收缩容器
- 如何使用javascript和css显示展开文本
- jQuery-在展开-折叠切换时显示/隐藏图像
- 创建菜单子菜单,点击更改,并显示+号展开或不展开
- 我可以改变引导崩溃,只显示/展开时,单击一个图标
- jQuery树视图中的展开和折叠图标在树中不显示
- 从JSON中获取用户数据到展开的选择框中,并在选择选项时显示该值
- 当使用JavaScript样式展开/折叠网格父元素时,网格就会消失.显示属性
- 展开我的当前功能以显示消息和更改选择