[英]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.