开发者

jQuery: Select only a class containing a string?

I'm currently using this to get the class for a specific bit of HTML on the page:

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

But that div has multiple classes: current_status statu开发者_开发知识库s_billed

My end goal here is to grab the class that starts with status_ and replace it with a different class name.

So using my .parent() function above, I'm able to select the div I need, but I then need to remove the status_billed class and replace it with, for example, status_completed (or a number of other class names).


Select divs that have the status_billed class:

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

Select divs whose class attribute contains status_:

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

That's about the best you'll get with jQuery selectors. You can do better using .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;
});

...but I'm not sure why you're doing all this - .parent() returns at most 1 element. Did you mean .closest() or .parents()?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜