BEM -Methodik besagt, dass Sie keine globalen Selektoren wie Tag -Selektoren verwenden sollten. Verwenden Sie also NAV__Item und NAV__Link.
Die gleiche Geschichte mit aktivem Modifikator. Sie sollten keine globalen Einheiten haben (Sie können Mixe verwenden, aber das ist etwas anderes). Der beste Weg ist also, mit Nav__Item (oder Nav__item_State_active in klassischer BEM-Notation) zu gehen.
Und BEM hat eine Sollution für JS, HTML (oder Vorlagen) und tatsächlich die Technologie eines anderen Blocks.
Die Hauptidee ist das Block weiß alles über sich selbst: wie es aussieht (CSS), wie es funktioniert (JS), welche HTML es produzieren sollte (Vorlagen), eigene Tests, Dokumentation, Bilder usw.
Und da die CSS -Technologie des NAV -Blocks Regeln auf deklarative Weise anwendet (Sie definieren einen Selektor und alle Knoten, die mit dieser Selektor übereinstimmen, sind mit diesen Regeln gestaltet), wie Sie Js des NAV -Blocks beschreiben können.
Bitte schauen Sie sich an http://xslc.org/jquery-bem/ Welches ist JQuery Plugin, das Ihnen die Möglichkeit bietet, in BEM -Weg leicht mit Blöcken zu arbeiten.
Wenn Sie ein Build -System verwenden, können Sie alle diese Technologien in denselben Ordner in das Dateisystem einstellen:
blocks/
nav/
__list/
nav__list.css
nav__list.js
__item/
nav__item.css
nav.css
nav.js
nav.test.js
nav.png
nav.md
Mit einer solchen Dateistruktur können Sie tiefer zu dem gehen, was Bem tatsächlich ist, und versuchen Sie es mit I-Bem.js: http://bem.info/articles/bem-js-main-terms/