Switch Statement和jQuery hasClass函数

时间:2016-05-26 18:19:36

标签: javascript jquery switch-statement

我正在尝试使用switch语句来检查当前页面是否具有特定的body类。这就是我要找的东西:

var bodyClass = $('body').hasClass('className')

 switch(bodyClass) {
    case 'homepage':
        // console.log("This is the homepage");
        break;
    case 'residential-page':
        // console.log("This is the residential page");
        break;
     default:
     // console.log("default code block ran");
 }

我确实理解jQuery hasClass函数返回true为false,并且像$(' body')。hasClass(' someClassName')一样使用,这将返回true或false。此外,我的身体通常有一个给定页面的大约7-10个不同的类名。

3 个答案:

答案 0 :(得分:4)

在我看来,这不是交换机的用例,而是一组简单的分支

var body = $('body');

if(body.hasClass('abc')) {
}
else if(body.hasClass('def')) {
}
else {
  /* default case */
}

/* etc */

答案 1 :(得分:0)

我同意另一个答案,你更适合使用if,否则if语句在这里,但另一种方法是将这些类从正文标记中删除并根据你的字符串检查它们:

var bodyClasses = ($('body').attr('class') || '').split(' ');

for (var i = 0, len = bodyClasses.length; i < len; i++) {
 switch(bodyClasses[i]) {
    case 'homepage':
        // console.log("This is the homepage");
        break;
    case 'residential-page':
        // console.log("This is the residential page");
        break;
     default:
     // console.log("default code block ran");
 }
}

答案 2 :(得分:0)

我知道这是一个旧线程,但可能会对其他人有所帮助。

如果您能够确保以特定顺序声明元素的类,则可以确保要检查的类在列表中的第一个/最后一个,并使用类似的内容:

var bodyClass = $('body').attr('class');
var firstClass = bodyClass.slice(0, bodyClass.indexOf(' '));

switch(firstClass) {
    case 'homepage':
        // Some code here
        break;
    case 'residential-page':
        // Other code here
        break;
    default:
        // More code here
}