Skip to content

Instantly share code, notes, and snippets.

@konratnox
Last active March 20, 2018 07:23
Show Gist options
  • Save konratnox/fa6ba26b313a56a954aa9dab23ab84e9 to your computer and use it in GitHub Desktop.
Save konratnox/fa6ba26b313a56a954aa9dab23ab84e9 to your computer and use it in GitHub Desktop.

Приём проектирования "поведение"

Шаблон проектирования «поведение» (behavior) позволяет задавать хитрые обработчики на элементе декларативно, установкой специальных HTML-атрибутов и классов.

Описание

Приём проектирования «поведение» состоит из двух частей:

Элементу ставится атрибут, описывающий его поведение. При помощи делегирования ставится обработчик на документ, который ловит все клики и, если элемент имеет нужный атрибут, производит нужное действие.

Пример

Сделаем так, что при клике на элемент с атрибутом data-toggle-id будет скрываться/показываться элемент с заданным id

<button data-toggle-id="subscribe-mail">
  Показать форму подписки
</button>

<form id="subscribe-mail" hidden>
  Ваша почта: <input type="email">
</form>
<script>
  document.onclick = function(event) {
    var target = event.target;

    var id = target.getAttribute('data-toggle-id');
    if (!id) return;

    var elem = document.getElementById(id);

    elem.hidden = !elem.hidden;
  };
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment