Javascript 什么';这是正确的jQuery选择器吗?我想用attr x获得所有tr,它们直接位于给定tr的(同一级别)之下
我目前正在做一些类似于树的东西,我希望能够折叠/展开孩子们。我想最简单的方法是使用嵌套列表,但我不能使用它们,因为我无法访问HTML代码。这是相关的简化HTML代码:Javascript 什么';这是正确的jQuery选择器吗?我想用attr x获得所有tr,它们直接位于给定tr的(同一级别)之下,javascript,jquery,html,jquery-selectors,Javascript,Jquery,Html,Jquery Selectors,我目前正在做一些类似于树的东西,我希望能够折叠/展开孩子们。我想最简单的方法是使用嵌套列表,但我不能使用它们,因为我无法访问HTML代码。这是相关的简化HTML代码: <table> <tbody> <tr rel="1"><td><a href="#" id="fold">fold</a> item 1</td></tr> <tr rel="2">
<table>
<tbody>
<tr rel="1"><td><a href="#" id="fold">fold</a> item 1</td></tr>
<tr rel="2"><td><a href="#" id="fold">fold</a> item 1.1</td></tr>
<tr rel="2"><td><a href="#" id="fold">fold</a> item 1.2</td></tr>
<tr rel="1"><td>item 2</td></tr>
<tr rel="1"><td><a href="#" id="fold">fold</a> item 3</td></tr>
<tr rel="2"><td><a href="#" id="fold">fold</a> item 3.1</td></tr>
<tr rel="3"><td>item 3.1.1</td></tr>
<tr rel="3"><td>item 3.1.2</td></tr>
</tbody>
</table>
项目1
项目1.1
项目1.2
项目2
项目3
项目3.1
项目3.1.1
项目3.1.2
如您所见,没有嵌套项,但有“级别”可用,所以我想应该可以实现我的想法。折叠/展开部分正在工作,例如,当我在项目1上单击“折叠”时,rel>=2的项目被隐藏。但那不是我想要的;我只想折叠rel高于单击“折叠”的项目,并想隐藏所有项目,直到我到达rel低于或等于当前rel的元素
例如,当我在项目1中单击“折叠”时,项目1.1和1.2应隐藏,但项目3.1应保持可见
有人能帮我开始吗?谢谢
b约恩我不认为用一个选择器就可以实现这一点。这是我的方法:请注意,我将您的
id=“fold”
更改为class=“fold”
,因为具有相同值的多个id是无效的。ID应该是唯一的
我在这里做的是(基本上):
- 获取所单击行的级别
- 遍历以下所有行。对于每个do:
- 检查标高是否更高(如嵌套更深);如果为true,则切换可见性,否则中止遍历
id=“fold”
更改为class=“fold”
,因为具有相同值的多个id是无效的。ID应该是唯一的
我在这里做的是(基本上):
- 获取所单击行的级别
- 遍历以下所有行。对于每个do:
- 检查标高是否更高(如嵌套更深);如果为true,则切换可见性,否则中止遍历
$("#fold").click(function()
{
var _current = $(this).parent().parent();
var _level = _current.attr('rel');
_current.nextAll().each(function()
{
if($(this).attr('rel') > _level){
$(this).hide();
}else{
// Nested children stopped here, we don't continue
return false;
}
});
});
像这样的东西应该有用
$("#fold").click(function()
{
var _current = $(this).parent().parent();
var _level = _current.attr('rel');
_current.nextAll().each(function()
{
if($(this).attr('rel') > _level){
$(this).hide();
}else{
// Nested children stopped here, we don't continue
return false;
}
});
});
谢谢,这是有效的,我试图解决问题的方式很难!:)小提示:我将您的
fold
-ID更改为类,因为ID必须是唯一的,并且不能多次使用。我相应地编辑了我的文章。我已经在代码中看到了它,已经修复了它(但不是这样),谢谢你指出了这一点。谢谢,这是有效的,我正在努力解决困难的问题!:)小提示:我将您的fold
-ID更改为类,因为ID必须是唯一的,并且不能多次使用。我相应地编辑了我的文章。我已经在代码中看到了它,已经修复了它(但不是这样),谢谢你指出这一点。