在对象之后获取一系列对象,并相应地隐藏/显示它们
Getting a range of objects after an object and hide/show them accordingly
我有一个列表组,它有单独的组,这意味着列表组中有行通过按类分配列表中的标题行来对它们进行分离/分组。我试图只隐藏组内部的列表,我不想像这段代码那样隐藏所有列表对象。有人知道如何只单独隐藏组吗?因此,当您单击组的标题时,它只会隐藏该组内的列表(不修改HTML代码中的任何标记)。特别是在参考下面的代码示例时,如果有人单击"标题2",则只有在"标题3"之后和之前的<li>
会消失/重新出现。请参阅下面的代码:
HTML:
<ul>
<li class="title">Title 1</li>
<li></li>
<li></li>
<li></li>
<li></li>
<li class="title">Title 2</li>
<li></li>
<li></li>
<li></li>
<li class="title">Title 3</li>
<li></li>
<li></li>
<li></li>
</ul>
jQuery/Js:
$("ul li.title").click(function(){
$("ul li").not(".title").toggle();
});
你可以在这里找到小提琴:http://jsfiddle.net/QNNgE/
我想你在追求这样的东西:-
$(this).nextUntil('li.title').toggle();
因此,当单击标题时,切换单击标题后所有元素的可见性,直到下一个。
这是一把小提琴
好的,试试这个方法:
HTML:
<ul>
<li class="title">Title 1</li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li class="title">Title 2</li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li class="title">Title 3</li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
jquery:
$("ul li.title").click(function(){
$(this).nextAll().toggle();
});
希望这能有所帮助。
jsFiddle
这很了不起,但可以按要求工作,而无需修改HTML:
编辑:啊,我明白我误解了这个问题。
在任何情况下,它都可以在不修改HTML的情况下执行类似的操作(类似手风琴)。
$("ul li.title").click(function(){
var title = $(this);
var inGroup = false;
title.parent().children().each(function(){
var li = $(this);
if (li.hasClass('title')) {
inGroup = li.get(0) == title.get(0);
} else {
if (inGroup) {
li.show();
} else {
li.hide();
}
}
});
});
$("ul li.title").eq(0).click();
相关文章:
- 是否可以在不重新渲染的情况下显示/隐藏父对象中的元素
- 取消隐藏网站中的隐藏对象
- 编程实践-使用helper方法隐藏对象
- 如果鼠标离开父对象,则隐藏元素
- 从范围中删除对象时,它会在 Angularjs 中隐藏其余对象
- 将字符串隐藏到javascript中的对象
- 使用javascript函数检索隐藏的文本值时出现对象HTMLinputElement错误
- 在 JavaScript 中,当我们实例化派生对象时,原型的函数隐藏在哪里
- angularjs 选中复选框时隐藏具有特定类的对象
- 在Angular.JS-ng隐藏vs过滤器中将对象分隔为两组
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- Javascript对象字符串值-在应该隐藏的时候呈现的HTML代码
- Three.js-显示/隐藏对象的一部分
- Three.js隐藏已加载模型的对象
- 将日期字符串隐藏到日期对象中
- 将对象隐藏到组合/对象数组
- 使可见对象隐藏和隐藏对象可见
- 将JS对象隐藏到具有父名称的平面数组中
- 将JSON对象中的JSON对象隐藏到Javascript中的JSON数组中
- 一个构造函数,其对象隐藏/显示一个html元素