jQuery条件,检查类以及它是否包含它执行的类

时间:2012-06-21 15:54:57

标签: javascript jquery wordpress

我正在使用wordpress,我必须根据产品类别显示一个菜单,但它是按术语进行的,我无法添加课程。所以我将term-maincat-subcat作为类,并且subcat会根据你的位置而变化,但是主要的cat与品牌保持一致。我正在研究jQuery通配符,并且有一种方法可以在类中选择具有特定字符串的元素。我如何运行条件来检查它是否在类中有该字符串。这就是我所拥有的......

if($('body').is('body[class~="brand"]')) {
   $('.brand-cat-nav').show();
}

以上似乎不起作用,就像我说的那样,遗憾的是,没有办法直接添加一个“品牌”类,以便能够使用.hasClass()更容易。有什么建议吗?

PS:它输出到正文的类是喜欢“term-maincat-subcat”的东西。

2 个答案:

答案 0 :(得分:3)

班级很容易检查:

if ($('body').is('.brand')) { ... }

或:

if ($('body').hasClass('brand')) { ... }

编辑 - 如果您想要查明某个字符串是否是某个类的 part ,那么这将要求您转到“className”属性并使用正则表达式进行检查:

if (/brand/.test($('body').prop('className'))) { ... }

如果它不总是“品牌”,那么你可以用字符串制作正则表达式:

function whatever( someClassFragment ) {
  if (new RegExp(someClassFragment).test($('body').prop('className')) { ... }

如果字符串中可能包含非字母字符,那么您必须处理该字符串。

答案 1 :(得分:1)

你可以试试这个:

if( $('body').filter("[class^='brand']").length )​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ {
    // body has class starting with 'brand'
}

这会使用以“品牌”开头的类名过滤body

如果您想测试body是否包含包含'品牌'的类,请使用class*="brand"作为过滤器。