почему не срабатывает событие blur в bootstrap?

237
10 марта 2018, 21:11

index.html

 <nav  id="myNavbar">
    <ul class="nav nav-pills nav-stacked ">
      <li><a class="hide-when-blur" data-toggle="collapse" data-target = "#site-development">Разработка сайтов<span class="glyphicon glyphicon-menu-right navbar-right xs-no-element"></span></a>
      </li>
    </ul>
    </nav>
<div class="collapse additional-bar" id="site-development">
      <ul class=" relay-style grey-color">
      <li><a href="#">пункт 1</a></li>
      <li><a href="#">пункт 2</a></li>
      <li><a href="#">пункт 3</a></li>
    </ul></div>

script.js

var elements = document.querySelectorAll(".hide-when-blur");
for(var key in elements){
    var item = elements[key];
    if(typeof(item)==="object")
        {
        item.addEventListener("blur",function(){
            console.log('blur works!!!');
        })          
    };
}

Нужно чтобы при клике на на эл-т с классом hide-when-blur на экране появлялся блок с классом additional-bar(это обеспечивает bootstrap, срабатывает).

А после этого, при нажатии на другой эл-т страницы(потеря фокуса с текущего эл-та) блок additional-bar пропадал.

Так вот событие blur почему-то не срабатывает. Что нужно сделать?

P.S. цикл в скрипте нужен чтобы перебрать все эл-ты hide-when-blur

Answer 1

Нужно добавить атрибут href к ссылке

Вот ссылка на список элементов которые могут словить "фокус". У ссылок (anchor) есть атрибут "href" и методы "focus". ( механика работы скорее всего такая, что без атрибута "href" не можно вызвать "focus/blur").
Вот ссылка по семантике тега "а". В HTML 5 тег а без href валидный но считается как " represents a placeholder " т.е. вы не можете нажать на него (активные элементы меню или хлебные крошки). А если элемент не предполагает нажатие, то и фокус на нем не нужен.

READ ALSO
Почему данные из формы не попадают сразу в компонент?

Почему данные из формы не попадают сразу в компонент?

Помогите пожалуйста понять скользкий моментЯ создал реактивную форму, добавил кастомный валидатор, который возвращает промис

212
Не могу получить данные json

Не могу получить данные json

Создал на локальном сервере файл json-datajson

215
Как добавить очередность через Классы

Как добавить очередность через Классы

Добрый день! Начал изучать ES6, классы и наследование, хочу сделать легкую игру, подскажите пожалуйста как правильно реализовать смену хода...

174