我有一个带标题栏的容器和一个隐藏在其下面的面板,直到单击标题栏,然后slideDown面板并将标题栏上升几个像素。这很好用。打开后我需要做的是单击标题栏并将其放回到其起始位置,同时仍然关闭面板并再次隐藏。当我在打开后单击标题栏时,面板关闭并消失,但标题栏仍然处于抬起位置(因为我没有任何东西可以降低它)。我尝试过几种不同的选择。
HTML
<div id="specialsEventsContainer" style="float:left">
<div id="specialsEventsTitle" style="top: 90px">
<p>Specials & Events</p></div>
<div class="promobox">
<div id="revealDown" style="height: 0; display:block;">
<div id="specialscalendarPortals">
<div class="halfsizeBoxes" style="float:left">
<a href=""><p>text text text</p></a>
</div>
<div class="halfsizeBoxes">
<a href=""><p>Tulalip Resort-Casino Calendar Portal</p></a>
</div>
</div>
<div class="fullsizeBoxes">
<a href=""><img src="~/Content/Images/promoimage.jpg" /></a>
</div>
<div class="fullsizeBoxes">
<a href=""><img src="~/Content/Images/promoimage.jpg" /></a>
</div>
<div class="fullsizeBoxes" style="margin-bottom:5px;">
<a href=""><img src="~/Content/Images/promoimage.jpg" /></a>
</div>
</div>
</div>
jquery的
<script type="text/javascript">
$(document).ready(function () {
var $spTitle = $('#specialsEventsTitle');
var $promobox = $('#revealDown');
$($spTitle).click(function () {
$spTitle.animate({ top: '8px' });
if ($promobox.height() > 0) {
$promobox.animate({ height: 0 });
} else {
$promobox.animate('slow').animate({ height: '100%' });
}
});
});
</script>
答案 0 :(得分:1)
而不是:
$spTitle.animate({ top: '8px' });
使用它:
if (parseInt($spTitle).css('top') > 0 )
$spTitle.animate({ top: '0px' });
else
$spTitle.animate({ top: '8px' });
答案 1 :(得分:1)
这似乎是.slideToggle
的完美案例。
您可以查看文档here。
<script type="text/javascript">
$(document).ready(function () {
var $spTitle = $('#specialsEventsTitle');
var $promobox = $('#revealDown');
$($spTitle).click(function () {
$promobox.slideToggle('slow', function() {
if (parseInt($spTitle).css('top') > 0 )
$spTitle.animate({ top: '0px' });
else
$spTitle.animate({ top: '8px' });
});
});
});
</script>
我还包括了Rob R的答案,因为它看起来是正确的,我正在努力解决该解决方案。代码未经测试。