Причина возникновения проблемы в том, что между кнопками open
и close
нет общего состояния.Поэтому, когда вы нажимаете кнопку close
и она закрывает контейнер, open
по-прежнему думает, что контейнер все еще открыт, и для получения желаемого поведения требуется два щелчка.он не использует переключатель (новый jsFiddle ):
<div class="main">
<a class="open"></a>
<div class="container">
<a class="close"></a>
</div>
<div id="containerState" style="display:none;">opened</div>
</div>
$('.open').click(
function () {
if ($('#containerState').text() == 'opened')
CloseContainer();
else if ($('#containerState').text() == 'closed')
OpenContainer();
});
$('.close').click(
function () {
CloseContainer();
});
function OpenContainer()
{
$('.container').animate({
right:"0px"
}, 500);
$('.open').animate({
right:"300px"
}, 500);
$('#containerState').text('opened');
}
function CloseContainer()
{
$('.container').animate({
right:"-300px"
}, 500);
$('.open').animate({
right:"0px"
}, 500);
$('#containerState').text('closed');
}