Javascript 检查body类是否包含带有jquery的短语?

Javascript 检查body类是否包含带有jquery的短语?,javascript,jquery,Javascript,Jquery,我知道如何检查元素是否包含某些文本,但我需要确定类是否包含某些文本。我有几个页面,其中正文将有一个类,如: <body class="high-school-region-1"> <body class="middle-school-region-1"> <body class="elementary-school-region-1"> 但与hasClass不同的是,它更像是“classContains”——我知道这不是一个真实的东西,但是。。。有办法吗 还

我知道如何检查元素是否包含某些文本,但我需要确定类是否包含某些文本。我有几个页面,其中正文将有一个类,如:

<body class="high-school-region-1">
<body class="middle-school-region-1">
<body class="elementary-school-region-1">
但与hasClass不同的是,它更像是“classContains”——我知道这不是一个真实的东西,但是。。。有办法吗

还是更好的方法?我真的没有一种简单的方法将“region-1”作为它自己的类注入到每一个页面上,所以这似乎是一种方法

谢谢你的帮助

您可以使用,因为类只是一个属性

if ( $('body[class*="region-1"]').length > 0 ) { ...
阿德内奥是正确的

if($('body').attr('class').indexOf('region-1')>=0)
也可以工作

然而,有一种简单的方法可以“将region-1作为自己的类注入”

这里,
body
既有
highschool
又有
region-1
类属性。可以将多个类添加为以空格分隔的列表。在本例中,您提供的代码

if($('body').hasClass('region-1')){//do this}

应该很好用


这是一个更干净的解决方案。检查一个类名的子字符串本质上就是将不同的类名放在一个类名中,然后再将它们取出。在我看来并不理想。

这里是一个纯JS实现


您可以编写自己的微型jQuery插件,使其可重用,如下例所示:

/**
 * Plugin implementation
 * use with any jQuery selector that returns 1
 * returns true or false depending on whether the element contains
 * 
 * @param  {string} cssClass
 * @return {Boolean|undefined}
 */
$.fn.containClass = function(cssClass) {
  if(this.length > 1) {
    return;
  }
  return $(this).attr('class').indexOf(cssClass) > -1;
};


// Example usage.
$(function() {

  if($('body').containClass('region')) {
    console.log('Yes it contains region here.');
  }


  if(!$('body').containClass('blablabla')) {
    console.log('no, blablabla is not found in class.');
  }


  console.log($('p').containClass('askjhdas'));
});

jsbin上的游戏区:

谢谢。这是一个wordpress站点,所以我不会手动将类添加到主体中。它已经拥有了它现在拥有的类,因为这是页面slug。我看不到一个好的方法来创建一个php函数来添加类,因为这些页面没有任何共同点。所以我想我必须按照第一个例子的方式来做。啊,我明白了!不用担心,林赛。祝你好运,谢谢你的选择。我已经在使用jquery来实现与本文相关的其他功能,所以我想我还是坚持使用jquery。但知道这个选择也很好。
var bodyId = document.getElementById('sexybod').className.split('-'),
lastClass = bodyId[bodyId.length - 2] +'-'+ bodyId[bodyId.length - 1];
alert(lastClass);
/**
 * Plugin implementation
 * use with any jQuery selector that returns 1
 * returns true or false depending on whether the element contains
 * 
 * @param  {string} cssClass
 * @return {Boolean|undefined}
 */
$.fn.containClass = function(cssClass) {
  if(this.length > 1) {
    return;
  }
  return $(this).attr('class').indexOf(cssClass) > -1;
};


// Example usage.
$(function() {

  if($('body').containClass('region')) {
    console.log('Yes it contains region here.');
  }


  if(!$('body').containClass('blablabla')) {
    console.log('no, blablabla is not found in class.');
  }


  console.log($('p').containClass('askjhdas'));
});