Подтвердить что ты не робот

JQuery: выберите только класс, содержащий строку?

В настоящее время я использую это, чтобы получить класс для определенного бита HTML на странице:

$(this).parent("div").attr('class')

Но это div имеет несколько классов: current_status status_billed

Моя конечная цель - захватить класс, начинающийся с status_, и заменить его другим именем класса.

Итак, используя мою функцию .parent() выше, я могу выбрать div, который мне нужен, но затем мне нужно удалить класс status_billed и заменить его, например, status_completed (или несколько другие имена классов).

4b9b3361

Ответ 1

Выберите div, у которого есть класс status_billed:

$(this).parent('div.status_billed')

Выберите div, чей атрибут class содержит status_:

$(this).parent('div[class*=status_]')

Что самое лучшее, что вы получите с помощью селекторов jQuery. Вы можете лучше использовать .filter():

$(this).parent('div').filter(function ()
{
    var classes = $(this).attr('class').split(' ');
    for (var i=0; i<classes.length; i++)
    {
        if (classes[i].slice(0,7) === 'status_')
        {
            return true;
        }
    }
    return false;
});

... но я не уверен, почему вы все это делаете - .parent() возвращает не более 1 элемента. Вы имели в виду .closest() или .parents()?