这是针对“与我们的工作人员见面”页面,其中有一个与工作人员(#staffDirectory)相关联的垂直无序的小图像列表。当用户点击与显示的工作人员不同的工作人员时,我想要当前的大型listitem(其中包含有关该成员的图像和信息 - 并被分配“classSelected”类并显示在div #staffMember中)到fadeOut,丢失该类,然后获取相应的listitem(用户在#staffDirectory中单击的那个),fadeIn那个,并添加“staffSelected”类。
现在发生的事情是有一个重叠,新的列表项简要显示在旧的列表右侧(但这只发生在我从#staffDirectory列表中点击的第二次和随后的次数 - 第一次工作得非常漂亮) 。所以,过渡并不顺利。我假设这个问题必须处理我对newMember变量的声明或它在fadeIn方法中的使用。
JS和CSS如下。提前谢谢。
JS:
$(document).ready(function()
{
$("#staffDirectory ul li").click(function()
{
var index = $("#staffDirectory ul li").index(this);
var newMember = null;
newMember = $("#staffMember ul li").get(index);
$(".staffSelected").fadeOut(500, function()
{
$(newMember).fadeIn(500).addClass('staffSelected');
});
});
});
CSS:
#staffContainer
{
margin-top: 45px;
}
#staffDirectory
{
margin: 25px;
float: left;
}
#staffDirectory ul
{
list-style:none;
}
#staffDirectory ul li
{
opacity: 0.5;
}
#staffDirectory img{
width: 55px;
cursor: pointer;
}
#staffDirectory li:hover{
opacity: 0.7;
}
.selectedMember {
opacity: 1.0 !important;
}
#staffMember{
}
#staffMember ul{
list-style: none;
}
#staffMember li{
display: inline;
}
.staffMemberImage {
float: left;
margin-right: 30px;
}
.staffName {
color: #7F0037;
font-variant: small-caps;
font-size: 20px;
font-weight: bold;
text-align: center;
}
.staffSelected {
display: inherit;
}
#staffMember li:not(.staffSelected) {
display: none;
}
HTML:
<div id="staffDirectory">
<ul>
<li class="selectedMember"><img src="img/silhouette.jpg"></li>
<li><img src="img/silhouette.jpg"></li>
<li><img src="img/silhouette.jpg"></li>
<li><img src="img/silhouette.jpg"></li>
<li><img src="img/silhouette.jpg"></li>
<li><img src="img/silhouette.jpg"></li>
</ul>
</div>
<div id="staffMember">
<ul>
<li class="staffSelected">
<img src="img/silhouette.jpg" class="staffMemberImage">
<p class="staffName">Jane Doe 1</p>
<p class="staffDesc">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam tincidunt mauris eu risus.
Vestibulum auctor dapibus neque. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam tincidunt mauris eu risus.
Vestibulum auctor dapibus neque. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam tincidunt mauris eu risus.
Vestibulum auctor dapibus neque.
</p>
</li>
<li>
<img src="img/silhouette.jpg" class="staffMemberImage">
<p class="staffName">Jane Doe 2</p>
<p class="staffDesc">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam tincidunt mauris eu risus.
Vestibulum auctor dapibus neque. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam tincidunt mauris eu risus.
Vestibulum auctor dapibus neque. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam tincidunt mauris eu risus.
Vestibulum auctor dapibus neque.
</p>
</li>
</ul>
</div>
编辑: 来自Firebug(我会发布图片,但我是网站新手):
<div id="staffMember">
<ul>
<li class="" style="opacity: 1; display: none;">
<li class="" style="display: none; opacity: 1;">
<li class="" style="display: none; opacity: 1;">
<li class="" style="display: none; opacity: 1;">
**<li class="staffSelected" style="display: list-item; opacity: 1;">
<li class="staffSelected" style="display: list-item; opacity: 1;">**
<img class="staffMemberImage" src="img/silhouette.jpg">
<p class="staffName">Jane Doe</p>
<p class="staffDesc"> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam tincidunt mauris eu risus. Vestibulum auctor dapibus neque. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam tincidunt mauris eu risus. Vestibulum auctor dapibus neque. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam tincidunt mauris eu risus. Vestibulum auctor dapibus neque. </p>
</li>
</ul>
</div>
答案 0 :(得分:1)
因此,您还需要从旧版本中删除staffSelected
。我拿了ajgiv的jsfiddle并改了它,所以它起作用了:
<强> jsFiddle 强>
JavaScript的:
$(document).ready(function () {
$("#staffDirectory ul li").click(function () {
var index = $("#staffDirectory ul li").index(this);
var newMember = null;
newMember = $("#staffMember ul li").get(index);
$(".staffSelected").stop().fadeOut(500).removeClass('staffSelected');
setTimeout(function () {
$(newMember).stop().fadeIn(500).addClass('staffSelected');
}, 500);
});
});
答案 1 :(得分:0)
你尝试过使用setTimeout吗?
$(".staffSelected").fadeOut(500, function() {
setTimeout(function() {
$(newMember).fadeIn(500).addClass('staffSelected');
}, 500);
});
编辑: 这会实现你想要的吗? http://jsfiddle.net/agroth3/MC6B2/