Ответ 1
При использовании селекторов атрибутов производительность может варьироваться в зависимости от поддержки querySelector в вашем браузере. jQuery вернется во встроенную библиотеку (SizzleJS), которая намного медленнее.
Выбор в именах классов будет быстрее, потому что он всегда будет использовать getElementsByClassName, которое обычно поддерживается во всех распространенных браузерах.
Как я вижу, классы служат другой цели, а затем атрибутам данных. Классы будут "классифицировать" элементы, чтобы их можно было правильно создать и создать структуру.
Атрибуты данных точно такие: data. Иногда вам нужно хранить дополнительные данные в своих элементах. Например:
<table>
<tr data-id="4" data-category="1">
<td>Name</td>
<td>Email</td>
</tr>
</table>
Обратите внимание, что я не использую обычный атрибут "id" по той же причине.