Работа с классовыми идентификаторами

Классовые идентификаторы являются очень важной частью компонентов, так как на их основе строится весь внешний вид.

Для взаимодействия с ними есть несколько методов. Названия методов говорят сами за себя.

bool hasClass(const string& className) const;
Component* removeClass(const string& className);
Component* addClass(const string& className);
Component* toggleClass(const string& className);

В качестве примера, когда может понадобиться взаимодействия с классовыми идентификаторами, это создание компонента для Checkbox в котором смена картинки может происходить из-за смены классового идентификатора с unchecked на checked и обратно.

Получение компонентов по классовому идентификатору

Как уже было описано ранее для доступа к компоненту используется его идентификатор. Но доступ к элементу можно получить и по классовому идентификатору, но с некоторыми оговорками.

Так как один и тот же классовый идентификатор может быть у нескольких компонентов, то по классовому идентификатору будет получена коллекция компонентов.

Для получения коллекции используется метод getElementsByClassName:

Components getElementsByClassName(const string& className);

Класс Components является оберткой над коллекцией компонентов. Над коллекцией можно производить следующие действия:

  1. Установить каждому элементу коллекции одинаковый прослушиватель с помощью метода addEventListener, который полностью повторяет метод класса Component;

  2. Вызвать для каждого элемента коллекции некоторую функцию обратного вызова с передачей первым параметром указателя на текущий элемент коллекции с помощью метода each

    void each(function< void(Component* sender)> callback);
  3. Получить компонент по номеру с помощью метода at или оператора []:

    Component* at(size_t index);
    Component* operator[](size_t index);

  4. Получить размер коллекции с помощью метода size:

    size_t size();

Last updated

Was this helpful?