Как сделать 2 разных чередующихся функции на одну ссылку?

Есть, например, вот такой скрипт:

$('a.link').click(function() {
	$('block').slideDown();
	return false;
});

По нему видно, что при клике на a.link разворачивается блок. Но как сделать так, чтобы при первом клике он разворачивался, а вот уже при повторном клике на a.link он сворачивался?

С hover можно сделать так:

$('a.link').hover(
	function() {
		$('block').slideDown();
	},
	function() {
		$('block').slideUp();
	}
);

Но вот как сделать аналогично при клике, не могу понять.
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
@kttotto
пофиг на чем писать
var flag = true;
$('a.link').click(function() {
  if(flag){
    $('block').slideDown();
  } else {
    $('block').slideUp();
  };
  flag = !flag;
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
DirecTwiX
@DirecTwiX
"display: flex;" уже предлагали?
Мб пригодится кому.
https://codepen.io/DTX/pen/yzjNKP
(function() {
  let closed = false
  $('#b1').click(() => { 
    !closed ? $('#d1').slideUp() : $('#d1').slideDown()
    closed = !closed
  })
})()

$('#b2').click(() => { 
  !$('#d2').hasClass('closed') ? $('#d2').slideUp() : $('#d2').slideDown()
  $('#d2').toggleClass('closed')
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы