因为用户必须两次点击相同的dt才能隐藏其子元素,所以如何点击任何其他dt后隐藏它的子元素。 提前谢谢。
<script type="text/javascript">
$(document).ready(function () {
$('#faq').find('dd').hide().end().find('dt').click(function () {
$(this).next().slideToggle();
});
});
</script>
<dl id="faq">
<dt>Question 1?</dt>
<dd>
Weee look at me I can type!!!
</dd>
<dt>Question 2?</dt>
<dd>
Weee look at me I can type too!!!
</dd>
</dl>
答案 0 :(得分:2)
我假设您希望一次只显示一个dd
,并发布此代码:
$(document).ready(function () {
$('#faq').find('dd').hide().end().find('dt').click(function () {
$(this).next().slideDown();
$(this).siblings('dd').not($(this).next()).slideUp();
});
});
$(this).next().slideDown();
向下滑动下一个元素,即dd
元素,并将其向下滑动。$(this).siblings('dd').not($(this).next()).slideUp();
幻灯片向上所有其他dd
元素(.not($(this).next())
位)。 .siblings()
正是您要找的,以及.not()
。
答案 1 :(得分:2)
Here's a jsfiddle您的代码。
您可以点击dt
来切换它的“孩子”dd
,但是根据它的声音,您希望在任何{{1}时隐藏所有可见的dd
点击。
您可以通过切换当前dt
旁边.not()
的所有dt
元素来执行此操作:
dd
您可以通过合并$('#faq').find('dd').hide().end().find('dt').click(function () {
$('#faq').find('dd:visible').not($(this).next()).slideToggle();
$(this).next().slideToggle();
});
回调中的第一行和第二行来进一步压缩代码,如here所示。
答案 2 :(得分:0)
$(function() {
$('#faq').find('dd:last-child').hide().end().find('dt').click(function () {
$(this).next().slideDown();
$(this).siblings('dd').not($(this).next()).slideUp();
});
我刚添加(last:child)class伪,因为我只需要显示一个
谢谢,我的代码让我很头疼,你的代码很可读:-D