Switch 语句和 jQuery hasClass 函数

问题描述 投票:0回答:4

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

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 个不同的类名。

javascript jquery switch-statement
4个回答
5
投票

我认为这不是交换机的用例,而是一组简单的分支

var body = $('body');

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

/* etc */

1
投票

我同意另一个答案,即您更适合在此处使用 if, else if 语句,但另一种选择是将类从 body 标记中剥离并根据您的字符串检查它们:

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");
 }
}

1
投票

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

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

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
}

0
投票

这个问题已经问了很长时间了。我将在这里添加我的答案,因为它可能对其他人有帮助。

switch (true) {
    case $('body').hasClass('homepage'):
        // console.log("This is the homepage");
        break;
    case $('body').hasClass('residential-page'):
        // console.log("This is the residential page");
        break;
    default:
    // console.log("default code block ran");
}
© www.soinside.com 2019 - 2024. All rights reserved.