Судя по стилям, вы вообще что-то не то и не туда добавляете. Если хотите решить вопрос с помощью 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
Или используйте БЭМ по фен-шую или не используйте вообще, смесь всего в одной куче - это ужасно.
И, к слову о поведении меню, - оно должно быть доступным для клавиатуры (должна быть возможность протабать все ссылки в нем. Подумайте на досуге как это сделать.