5

我有一个动态 div,它可以生成 1000 多个不同的类……它是一个 wordpress 主题。

现在我想检查一个 div 是否有 52 个类之一。

.bg1、.bg2、.bg3 等...

我知道你可以使用 hasClass();

但是我如何检查每一个然后得到值。例如,这里是 div 的样子

<div id="wordpresspost" class="bodyclass post-id-193 wordpresswrap bg1"></div>

请记住我真的不知道jquery:D

我在想它会是这样的,但从逻辑上讲这对我来说没有意义:(

var divclass = $("#wordpresspost").hasClass('bg1, bg2, bg3, bg4, bg5, bg6');

if(divclass == true){
    var divsclass = $(this);
}

我需要知道这个类,因为我想改变它,例如我想 .removeClass 然后添加一个新类而不改变其他类,因为它们是动态的

提前感谢您的建议:)

4

4 回答 4

14

使用.is()

var divclass = $("#wordpresspost").is('.bg1, .bg2, .bg3, .bg4, .bg5, .bg6');
于 2013-04-25T19:23:06.917 回答
5

您可以使用选择器开始

需要注意的是,如果您有另一个以 bg[something] 开头的课程,则会受到影响

if($("#wordpresspost[class^=bg]").length > 0)
{
....
}

为了删除它,正则表达式可能会有所帮助。

$("#wordpresspost[class^=bg]").each(function(){
     this.className = this.className.replace(/\bbg.*?\b/g, 'newclass');
});
于 2013-04-25T19:22:12.873 回答
0
var el = document.getElementById('wordpresspost');
var regxpr = /\b(bg(?:[1-9]|[1-4]\d|5[0-2]))\b/g, match;
while(match = regxpr.exec(el.className)){
    // match[1] contains the current matching class
    console.log(match[1]);
    // Then you can do:
        $(el).removeClass(match[1]).addClass(replacementForMatch);
}

JSFiddle

于 2013-04-25T19:46:50.803 回答
-1

如果您只在一个元素中搜索 bg*,您可以只使用简单的正则表达式。

 var hasBg = /bg[\d]+/.test(document.getElementById("mydiv").className);
于 2013-04-25T19:25:19.670 回答