Приветствую, я поверхностно знаком с js и jq. Более того не различаю их.
С этим довольно просто: jQuery сделан из (написан на) javascript.
Если представить что jQuery это такой крутецкий лего-замок с драконами и принцессами, то javascript - сами детальки из которых замок состоит. И из этих деталек можно собрать не только замок, но и аэропорт или нефтеперерабатывающий завод, например.
Если менять айди html-элементов, от этого очень часто возникает путаница и что-то ломается. Представьте что кто-то бегает по университету и меняет номера аудиторий - даже если он сам запомнил что куда менял, то остальные могут заблудиться. Лучше не делать так вообще.
И не стоит давать нескольким элементам одинаковый айди - мало того что это запрещено спецификациями - от этого тоже ломаются скрипты, при поиска по айди они находят только первый из нескольких одинаковых элементов.
И кроме того, при смене айди обработчик не изменится. Они навешиваются не на айди, а на сам элемент.
Используя тот-же пример с аудиториями, это как сказать "эй парни, отнесите этот проектор в аудиторию №2" а потом поменяйте таблички №2 и №3 местами" и при этом ожидать что проектор сам перенесется вслед за табличкой. (Подсказка: он не перенесется).
как сократить это
Скорее всего весь ваш код можно заменить чем-то строк на 10 (один обработчик на родительском элементе, смена класса вместо смены айди), но я не совсем понимаю что вы пытаетесь сделать, и поэтому не могу подсказать, как именно его нужно менять.