Почему для каких-то действий используют JS а не label+checkbox/radio?
В таком способе есть особенность — при построении из JS структуры нужно динамически формировать правила. Мне кажется, что многие начинают сразу с jQuery, не зная нативного JS и не умея пользоваться его возможностями.
Пример — стоит попросить кого создать на ходу правила при динамическом формировании элементов, и тут же в ответ увидишь удивлённые глаза.
Другой пример — ощущение, что про 3 фазы событий знает не так много людей, как хотелось бы. На вопрос, можно ли при клике на элементе обработать его в document так, что до этого элемента оно так и не дойдёт — ещё более круглые глаза... Когда объясняешь человеку, что его onclick вообще никогда не сработает, не верит.
Так что делайте как удобно, но не рассчитывайте, что вокруг будут делать как лучше. Тенденция — делать как проще и с наименьшими затратами. Знания библиотек становится более значимым, чем знания основ.
#ch1:checked ~ .d1 .s1 
А если таких 50 будет? Для каждой ручками css прописывать будете?
На js более универсально в любом случае.