jQuery: выбрать только класс, содержащий строку? - PullRequest
18 голосов
/ 05 ноября 2010

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

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

Но у div есть несколько классов: current_status status_billed

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

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

1 Ответ

44 голосов
/ 05 ноября 2010

Выберите div с классом status_billed:

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

Выберите div s, чей атрибут 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()?

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