raselgit
@raselgit
Веб-дизайнер

Как скрыть элемент при клике в другом месте?

Есть карта, на которой отмечены точки геолокации. При нажатии на любую точку, появляется окошко с информацией. При нажатии на другую точку, предыдущее окошко скрывается.

Вот код:
$(function(){
	$('.mark').click(function(e){
		if(!$(e.target).hasClass('active')){
			$('.mark.active +.tooltip').fadeOut();
			$('.mark.active').removeClass('active');
			$(e.target).addClass('active');
			$('.mark.active +.tooltip').fadeIn();
		}
	});
});

Как сделать так, чтобы при нажатии на любое другое место окошко скрывалось?
  • Вопрос задан
  • 250 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Вместо .mark вешайте обработчик на body. Если клик не на .mark или не на .active - скрывать окно, если клик на .mark, у которого нет active - показывать окно. Типа так:

$('body').on('click', function(e) {
  var
    $target = $(e.target),
    isMark = $target.hasClass('mark'),
    isActive = $target.hasClass('active');

  if (!isMark || !isActive) {
    $('.mark.active +.tooltip').fadeOut();
    $('.mark.active').removeClass('active');
  }

  if (isMark && !isActive) {
    $target.addClass('active');
    $('.mark.active +.tooltip').fadeIn();
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы