Javascript jQuery:只选择一个包含字符串的类?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4106958/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-23 10:38:19  来源:igfitidea点击:

jQuery: Select only a class containing a string?

javascriptjquerycss-selectors

提问by Shpigford

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

我目前正在使用它来获取页面上特定 HTML 位的类:

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

But that divhas multiple classes: current_status status_billed

但这div有多个类:current_status status_billed

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

我的最终目标是获取以 开头的类status_并将其替换为不同的类名。

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

因此,使用.parent()上面的函数,我可以选择我需要的 div,但是我需要删除status_billed该类并将其替换为例如status_completed(或许多其他类名)。

回答by Matt Ball

Select divs that have the status_billedclass:

选择div具有以下status_billed类别的s :

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

Select divs whose classattribute contains status_:

选择divs 其class属性包含status_

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

That's about the best you'll get with jQuery selectors. You can do better using .filter():

这大概是您使用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;
});


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

...但我不确定你为什么要这样做 -.parent()最多返回 1 个元素。你是说.closest()还是.parents()