Для меня это зависит от того, каким будет использование статуса ...
- Если макет меняется в зависимости от выбранного, я использую класс
- логика JS (больше, чем только стилизация) -> атрибут
Я почти не использую классы для добавления логики js к элементам ... css имеет тенденцию меняться чаще, чем базовые файлы javascript. Если я использую классы в js, я заставляю себя сохранять имена классов и селекторы в css или просто повторять все выбор элементов в js и css, когда нужно изменить (например, из-за использования другой библиотеки или шаблонов css)
Что касается вашего третьего варианта, атрибут может дать вам массив всех выбранных элементов, используя селектор jquery $ ('* [selected]')