Как я могу использовать ТОЛЬКО связывание вместо вызова при итерации NodeList с использованием forEach? - PullRequest
0 голосов
/ 31 августа 2018

Я новичок в программировании на Javascript. Поэтому, пожалуйста, объясните мне, могу ли я использовать привязку здесь. Это меню вдохновлено левым боковым меню, найденным на YouTube. При нажатии на ярлык и значок меню, появляется главное меню, а значок меню перемещается вправо, а ярлык - вверх. Чтобы закрыть меню, необходимо снова щелкнуть значок меню.

var menu = (function() {

      function initiate() {
        //[].slice.call I used by using call but i want to to by binding and I am not able to do.
        [].slice.bind(null, document.querySelectorAll('.menu')).forEach(function(element, i) {

            var titleclick = el.querySelector('div.d-striker'),
              striker.addEventListener('click', function(event) {
                if (!open) {
                  el.className += ' dr-menu-open';
                  open = true;
                }
              }, false);

            icon.addEventListener('click', function(event) {
              if (open) {
                event.stopPropagation();
                open = false;
                el.className = el.className.replace(/\bdr-menu-open\b/, '');
                return false;
              }
            }, false);
          }

          initiate();

        })();
<div class="side">
  <nav class="menu">
    <div class="d-striker">
      <span class="d-icon dr-icon-menu"></span><a class="dr-label">Account</a>
    </div>
    <ul>
      <li><a class="d-icon dr-icon-user" href="#">icon</a></li>
      <li><a class="d-icon dr-icon-cam" href="#">Videos</a></li>

      <li><a class="d-icon dr-icon-download" href="#">Downloads</a></li>
      <li><a class="d-icon dr-icon-settings" href="#">Settings</a></li>
    </ul>
  </nav>
</div>

1 Ответ

0 голосов
/ 31 августа 2018

bind() возвращает связанную функцию, но вам нужно вызвать эту функцию, чтобы получить массив, необходимый для forEach. Добавьте скобки для вызова функции.

[].slice.bind(null, document.querySelectorAll('.menu'))().forEach(function(element, i) {
                                                       ^^
...