簡體   English   中英

javascript switch語句,如果string包含substring

[英]javascript switch statement, if string contains substring

我試圖弄清楚如何做一個switch語句,我需要找到對象的類名,然后根據類名做一些事情(在switch語句中)。

在這個例子中,我需要switch語句在類包含特定單詞時執行我需要的任何操作,例如“person”。

HTML

<div class="person temp something"></div>

JavaScript的

$(document).on('mousedown', function(e) {
    var clicked = $(e.target).attr('class');
    console.log(clicked);
    switch (clicked) {
        case "person":
            //do something
            break;
        default:    
            //do something  
    }
});

不保證switch語句名稱(例如“person”)將位於第一個位置。

我知道我可以通過數組搜索特定的單詞,但我不知道如何將其添加到這類內容中。

正如我在評論中所說,在這種情況下, switch語句似乎不合適。

由於您使用的是jQuery,只需使用.hasClass

if ($(e.target).hasClass('person')) {
  // do something
}

如果你想為多個類做一些更復雜的事情,你可以創建一個class -> function映射並簡單地迭代類列表:

var classActions = {
    person: function(element) { /* do something */ },
    temp: function(element) { /* do something */},
    // ...
};

var classes = e.target.className.split(/\s+/);
$.each(classes, function(index, cls) {
    classActions[cls](e.target);
});

您將要使用.split().indexOf()的組合 你的代碼是這樣的:

var clicked = $(e.target).attr('class');
var classes = clicked.split(' ');

    if(classess.indexOf('person') > 0) {
      //do work
    } else if (classes.indexOf('foo') > 0) {
      //do work
    } else if (classes.indexOf('bar') > 0) {
      //do work
    }

關於.split()的MDN 文檔

關於.indexOf()的MDN 文檔

請注意,有很多方法可以讓您這樣做。 例如,您可以使用string.search(substring)來檢查字符串是否包含您的子字符串。 如果有子串,則返回找到的索引(從0到n的某個數字),否則如果找不到則返回-1。 因此,如果search大於或等於0,則存在子串。

if(clicked.search("person") >= 0)
    // "person" is in clicked

暫無
暫無

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

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