【问题标题】:how to check if a div has a class out of multiple classes in jquery如何检查一个div是否在jquery中具有多个类中的一个类
【发布时间】:2013-04-19 20:04:46
【问题描述】:

我有一个动态 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 然后添加一个新类而不更改其他类,因为它们是动态的

提前感谢您的建议:)

【问题讨论】:

  • 我会做if ( elem.className.seach( re ) &gt; -1 ) { ...

标签: javascript jquery


【解决方案1】:

您可以使用starts with 选择器。

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

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

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

$("#wordpresspost[class^=bg]").each(function(){
     this.className = this.className.replace(/\bbg.*?\b/g, 'newclass');
});

【讨论】:

  • 当它有“bgColorBlue”类时,它会失败。
  • @PSCoder 我需要知道这个类,因为我想改变它,例如我想 .removeClass 然后添加一个新类而不改变其他类,因为它们是动态的
【解决方案2】:
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

【讨论】:

    【解决方案3】:

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

     var hasBg = /bg[\d]+/.test(document.getElementById("mydiv").className);
    

    【讨论】:

      【解决方案4】:

      使用.is():

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-08
        • 2017-11-06
        • 2010-10-21
        • 1970-01-01
        • 2012-05-13
        • 2023-01-13
        • 2012-02-16
        • 2018-07-31
        相关资源
        最近更新 更多