如何在 jQuery 中隐藏正确的面板,其中有 2 个具有相同的类
How do I hide the proper panel in jQuery where there are 2 with the same class?
我试图一次只隐藏一个面板,具体取决于您单击的链接
这是用车把生成的html
<li>
<a class="hide-me"><h3>Enterprise</h3></a>
<ul class="sections">
{{#each chart-container.[0].enterprise}}
<li>
<a>
<span>
<img src="{{picture}}" />
{{name}} <br> {{role}}
</span>
</a>
</li>
{{/each}}
</ul>
</li>
<li>
<a class="hide-me"><h3>Consumer</h3></a>
<ul class="sections">
{{#each chart-container.[1].consumer}}
<li>
<a>
<span class="name-role" id="{{id}}">
<img src="{{picture}}" />
{{name}} <br> {{role}}
</span>
</a>
</li>
{{/each}}
</ul>
</li>
这是jQuery
$('.hide-me').on('click', function() {
$('.sections').slideToggle();
});
但显然它隐藏了那个班级,在这种情况下我该怎么办?
你需要找到你要找的那个。给定此结构,它看起来像:
var $li = jQuery(this).closest("li"); // Gets the parent li element
var $sections = $li.find(".sections"); // Within that li, finds the sections ul
$sections.slideToggle(); // Applies directly to this element
可能还有其他方法可以到达那里 - jQuery有很多方法可以达到DOM-但是我发现这很好而且很干净。
编辑
其他答案,使用 next
,应该工作正常 - 我避免它的原因是因为您可能会操纵列表的外观 - 也许将锚点移动到末尾而不是开头,或者在那里扔一个图像或其他东西 - 如果你这样做,你的代码将不再工作。我的方式是,只要你保持基本结构,不要把东西移到这个结构之外,你都很好。
根据显示的 html 使用next()
$('.hide-me').on('click', function() {
$(this).next().slideToggle();
});
相关文章:
- Jquery隐藏未触发
- 使用JavaScript或jQuery隐藏和显示元素
- 使用jQuery隐藏和显示表中的额外列
- JQuery隐藏/显示无法正常工作
- 使用jQuery隐藏和显示具有相同Class的类
- 使用jquery隐藏、显示
- 如何使用jQuery隐藏与选择选项相关的选择选项列表
- jQuery隐藏元素在使用CSS显示时保持隐藏状态
- jQuery隐藏函数与“;按钮“;以及“;span”;但不是用“;a“;要素
- jQuery隐藏函数出现问题
- jQuery 隐藏按钮,如果它们不包含文本
- 我无法用jQuery隐藏我的段落
- jQuery 隐藏选项元素
- 使用 JQuery 隐藏没有数据(包括标头)且具有相同表 ID 的列
- 使用jQuery隐藏元素;不起作用
- jQuery:隐藏类,以便隐藏该类随后创建的元素
- jQuery隐藏只触发一次
- jQuery隐藏所有trs或td,而不仅仅是一个
- JQuery隐藏/显示不起作用
- jQuery隐藏/显示问题