La méthodologie BEM indique que vous ne devriez pas utiliser de sélecteurs globaux tels que les sélecteurs de balises, alors utilisez NAV__Item et NAV__Link.
La même histoire avec un modificateur actif. Vous ne devriez pas avoir d'entités mondiales (vous pouvez utiliser des mélanges mais c'est un peu différent). La meilleure façon est donc d'aller avec NAV__Item - active (ou nav__item_state_active en notation BEM classique).
Et BEM a Sollution pour JS, HTML (ou modèles) et en fait toute autre technologie de bloc.
L'idée principale est que bloquer sait tout sur lui-même: à quoi il ressemble (CSS), comment il fonctionne (JS), ce qu'il devrait produire HTML (modèles), ses propres tests, documentation, images, etc.
Et comme la technologie CSS du bloc Nav applique les règles de manière déclarative (vous définissez un sélecteur et tous les nœuds qui correspondent à ce sélecteur avec ces règles) de la même manière que vous pouvez décrire JS du bloc Nav.
Veuillez jeter un œil à http://xslc.org/jquery-bem/ qui est le plugin jQuery qui vous offre la possibilité de travailler facilement avec des blocs de BEM.
Et dans le cas où vous utilisez un système de construction, vous pouvez mettre toutes ces technologies dans le même dossier sur le système de fichiers:
blocks/
nav/
__list/
nav__list.css
nav__list.js
__item/
nav__item.css
nav.css
nav.js
nav.test.js
nav.png
nav.md
Ayant une telle structure de fichiers, vous pouvez approfondir ce qu'est BEM réely et essayer i-bem.js: http://bem.info/articles/bem-js-main-terms/