@leshaogonkov
Frontend Developer

Правильное сохранение информации о элементе?

Есть задача выбрать элементы без определенного класса (classX), присвоить им этот класс (classX), и запомнить кому мы присвоили его, что бы можно было потом его убрать.



Что-то вроде:

<span class="class">Элемент 0</span><br>
<span class="class classX">Элемент 1</span>




Как видно из примера classX уже может быть у какого-то из элементов в выборке, для чего мне и нужно как-то «метить» элемент у которого изначально не было classX.



Сейчас я это решаю при помощи присвоения дополнительного класса:

<span class="class classX classZ">Элемент 0</span><br>
<span class="class classX">Элемент 1</span>




И когда мне нужно вернуть всё как было, я уже оперирую элементом с classZ.



Как правильно решить эту задачу? Правильно ли хранить это значение в атрибуте
<a href="http://dev.w3.org/html5/spec/elements.html#embedding-custom-non-visible-data-with-the-data-attributes">data-*</a>
, например?
  • Вопрос задан
  • 2293 просмотра
Пригласить эксперта
Ответы на вопрос 3
@temaHT
Я так понимаю вы используете jQuery? А что вам мешает после перед присвоением класса сохранить ноды в некоторую глобальную переменную, с помощью которой в дальнейшем сначала выставить класс, а затем, когда нужно — убрать?
Ответ написан
taliban
@taliban
php программист
Как насчет держать переменную с кешем? выбрали кучу элементов, записали их в переменную, выбрали другую записали тужа же, надо изменить назад, берем прошлую выборку и меняем
Ответ написан
@korvindest
Что бы не держать переменную с кешем, можно воспользоваться классом маркером, который ничего не меняет в стиле, но четко определяет, что эти элементы свеже помеченные. При этом если таких пометок надо сделать много, то маркер можно нумеровать.
$('.class').not('.classX').addClass('classX').addClass('marker01');
// далее такие элементы легко выбрать так
$('.marker01').removeClass('classX').removeClass('marker01');

Что то в таком духе. Все тоже самое можно легко провернуть и без jQuery, но получится несколько более громоздко.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы