簡體   English   中英

切換語句和jQuery hasClass函數

[英]Switch Statement and jQuery hasClass function

我正在嘗試使用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個不同的類名。

我認為這不是開關的用例,而是一組簡單的分支

var body = $('body');

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

/* etc */

我同意另一個答案,即您更適合僅在此處使用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");
 }
}

我知道這是一個舊線程,但它可能會對其他人有所幫助。

如果您可以確保以特定順序聲明元素的類,則可以確保要檢查的類在列表中排在第一位/最后一位,並使用類似以下內容的方法:

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM