Есть ли элегантный способ проверить, имеет ли хотя бы один элемент определенный класс? - PullRequest
1 голос
/ 02 февраля 2020

У меня есть список элементов, и я хочу проверить, имеет ли хотя бы один класс demo_control

Следующий код работает. Есть ли более элегантный способ?

    var a='f_date1,f_date2,f_date3,f_date4,f_field1,f_field2'.split(',');
    var flag=false;
    var i;
    for (i = 0; i < a.length; i++) {
        if ($('#'+a[i]).hasClass('demo_control')) {
            flag=true;
        }
    }

Ответы [ 4 ]

2 голосов
/ 02 февраля 2020

Это может быть элегантным решением

const ids = 'f_date1,f_date2,f_date3,f_date4,f_field1,f_field2';
const query = ids.split(',').map(el => `#${el}.demo_control`).join(', ');
const flag = $(query).length > 0;

Я только что создал один селектор для вас идентификаторов с классом. И проверьте, есть ли элементы, соответствующие этому селектору.

2 голосов
/ 02 февраля 2020

Документация hasClass гласит:

Определите, назначен ли какой-либо из сопоставленных элементов данному классу.

Так что нет надо l oop явно; просто выделите элементы в одном go и примените метод к этому выбору:

let flag = $('#f_date1,#f_date2,#f_date3,#f_date4,#f_field1,#f_field2').hasClass('demo_control');
1 голос
/ 02 февраля 2020

Это все, что вам нужно сделать, чтобы получить количество классов ...

flag=document.getElementsByClassName('demo_control').length>0;
1 голос
/ 02 февраля 2020

Если demo_control является уникальным для этих полей, почему бы не сделать:

flag = $(".demo_control").length > 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...