我正在试图弄清楚如何做一个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”)将位于第一位。
我知道我可以通过数组搜索特定的单词,但我不知道如何将其添加到这类内容中。
答案 0 :(得分:7)
正如我在评论中所说,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);
});
答案 1 :(得分:3)
您希望使用 .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 documentation.indexOf()
上的MDN documentation答案 2 :(得分:1)
请注意,有很多方法可以让您这样做。例如,您可以使用string.search(substring)
来检查字符串是否包含您的子字符串。如果有子字符串,则返回找到的索引(从 0到n 中的某个数字),否则如果未找到,则返回-1。因此,如果search
大于或等于0,则子串存在。
if(clicked.search("person") >= 0)
// "person" is in clicked