Как сделать меню с задержкой при hover (js)?
Судя по стилям, вы вообще что-то не то и не туда добавляете. Если хотите решить вопрос с помощью js, для начала уберите все, что сязано с :hover из css. На событие hover будет добавляться отдельный класс "hovered":.b-content-block__menu ul li.hovered > .b-content-block__menu__submenu { ... }
.b-content-block__menu ul li.hovered > .b-bottom-submenu { ... }
Теперь на упомянутое событие этот класс добавляем:function(){
    setTimeout(function() {
        $(this).addClass('hovered');
    }, 
    500);
},
Не работает, что логично. Выходов два, первый:function(){
    var _this = this;
    setTimeout(function() {
        $(_this).addClass('hovered');
    }, 
    500);
},
Второй - использовать стрелочную функцию. Надеюсь гуглом пользоваться умеете. В любом случае нужное поведение будет получено.А теперь о боли...
Если вы используете БЭМ, не делайте вот так, пожалуйста:.b-content-block__menu ul li .b-content-block__menu__submenu
А что вот это такое?.b-content-block__menu ul li:hover > b > a
Или используйте БЭМ по фен-шую или не используйте вообще, смесь всего в одной куче - это ужасно.
И, к слову о поведении меню, - оно должно быть доступным для клавиатуры (должна быть возможность протабать все ссылки в нем. Подумайте на досуге как это сделать.
Так ведь у них у всех этот класс уже создан в html-разметке