javascript switch语句,如果string包含substring

时间:2014-08-16 03:01:25

标签: javascript jquery

我正在试图弄清楚如何做一个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”)将位于第一位。

我知道我可以通过数组搜索特定的单词,但我不知道如何将其添加到这类内容中。

3 个答案:

答案 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