【发布时间】:2017-04-11 21:00:51
【问题描述】:
当您单击“查看更多”时,我试图显示隐藏的 <dl> 标签。在这个例子中,我有 3 个 <dl> 元素,但它可能或多或少。
HTML
<dl class="dl">
<dt><b>Name:</b></dt>
<dd>My name</dd>
<dt><b>Department</b></dt>
<dd>My department</dd>
<dt><b>Email</b></dt>
<dd>My Email</dd>
</dl>
<br/>
<dl class="dl">
<dt>Name:</dt>
<dd>My name</dd>
<dt>Department</dt>
<dd>My department</dd>
<dt>Email</dt>
<dd>My Email</dd>
</dl>
<br/>
<dl class="dl">
<dt>Name:</dt>
<dd>My name</dd>
<dt>Department</dt>
<dd>My department</dd>
<dt>Email</dt>
<dd>My Email</dd>
</dl>
jQuery
$(function(){
$("#dl").each(function(){
var $dd = $(this).nextUntil("dt"), $this;
$dd.filter(":gt(0)").hide();
if($dd.length > 1){
$dd.last().after($("<a href='#'>View More</a>").click(function(e){
e.preventDefault();
$(this).text($(this).text() == "View More"?"Hide More":"View More")
.prevAll("dt:first").nextUntil("dt").filter(":gt(2):not('a')").toggle()
}));
}
});
});
现在的问题是,当我点击“查看更多”时,什么也没有发生,换句话说,其他 2 个<dl> 元素没有出现。而我想要发生的是,当您点击 View More 时,另一个 <dl> 会出现,而当您点击 Hide More 时,在点击 Hide More 时将隐藏的那个隐藏起来strong>显示更多
我可以做到这一点:一个接一个地显示其余的 <dl> 元素或一次显示其余的 <dl> 元素。或/并同时隐藏元素一个或一个。
这是JSFiddle
【问题讨论】:
-
如果必须选择,点击“查看更多”时您更喜欢哪种行为
-
当您点击“查看更多”时,显示其余的
<dl>元素,在这种情况下,显示其他 2 个<dl> -
你不能为多个元素设置相同的id,id必须是唯一的
-
@JoshHarrison 一个一个地显示它们会很好地一个一个地显示直到显示全部,然后当所有的东西都显示出来时显示“隐藏更多”选项
标签: javascript jquery html toggle