开发者

switch case statement based one of many classes

I'm trying to implement a switch case statement like this:

switch (active.attr('class')){
    case "video": ...

        case "slideshow": ...
...

The problem is, that "v开发者_如何学运维ideo" and "slideshow" each are one of three classes the div I'm trying to target has, therefor it doesn't match the case...

How would I basically say "video is a part of attr('class')" ?

Thanks, Lutz


It looks like you're using jQuery, which offers two methods for that:

  • .is()help
  • .hasClass()help

So you can either call:

if( active.hasClass('video') ) { }

or

if( active.is('.video') ) { }

Notice that .is() requires a more specific pattern with the leading . but it you can determine lots of other things too like .is('div') etc.


You could perhaps try and split the string. From the top of my head:

var classes = active.attr('class').split(' ');
foreach(var c in classes) {
    switch(c) {
        case 'video'
        ...
        case 'slideshow'
        ...
    }
}

Just an idea. The above answers might do the same in other ways :)

Edit:

You could also use jQuery .each() like this:

classes.each(function(c) {
    switch(c) {
        case 'video'
        ...
        case 'slideshow'
        ...
    }
}


You can use hasClass

See this related post. I think it does what you're looking to do.


Use if and the hasClass method:

if (active.hasClass('video')) {
}
else if {active.hasClass('slideshow')) {
}

If you need to do both (fall-through on the switch), remove the else so the if statements are independent.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜