【问题标题】:Switch statement and classesSwitch 语句和类
【发布时间】:2013-02-26 18:07:29
【问题描述】:
var item = $(this).attr('class');

switch (item) {
    case 'menu-visie active':
        soundManager.play('soundLaag1');
        break;

有没有办法,我可以删除案例中的活动。变量的类是菜单可见的。但有时课程是菜单可见的。但是当课程是菜单可见时。脚本不工作。

如何设置 switch 语句。那个语句只看menu-visie 类。现在类必须完全相同

【问题讨论】:

  • 为什么不简单地测试if $(this).hasClass('menue-visie') 呢?目标对读者来说很清楚。
  • 您在同一个switch 中还有其他case 语句吗?否则,我根本不明白为什么要使用switch
  • 您将拥有多少个案例?只有两个?
  • 您好,感谢您的回答。但我有超过 10 种不同的选择。这不是最好的方法吗?

标签: javascript jquery switch-statement


【解决方案1】:

您应该使用 jQuery 来处理这些类,而不是手动操作。例如:

if ($(this).hasClass('menu-visie')) {
  soundManager.play('soundLaag1');
}

更新 如果你有很多类,我会创建一个对象来存储它们。例如:

var self = this,
    sounds = {
      'menu-visie':'soundLaag1',
      'menu-visie2':'soundLaag2'
    };

$.each(sounds, function(i,n) {
  if (self.hasClass(i)) {
    soundManager.play(n);
  }
});

【讨论】:

  • 您好,感谢您的回答。但我有超过 10 种不同的选择。这不是最好的方法吗?
【解决方案2】:

你可以这样做:

if($(this).hasClass('menu-visie')) {
    soundManager.play('soundLaag1');
}

【讨论】:

    【解决方案3】:

    我会这样做:

    if( $(this).hasClass('menu-visie') ) {
        soundManager.play('soundLaag1');
    } else {
        //something else.
    }
    

    【讨论】:

      【解决方案4】:

      正如大多数人所提到的,您应该使用 Jquery 方法“hasClass”。如果您仍然想保留您的开关(如果您有很多语句),您可以这样编写代码:

      switch (true) {
          case $(this).hasClass('menu-visie'):
              soundManager.play('soundLaag1');
              break;
      

      【讨论】:

      • 我认为这是对 switch 语句的一种不舒服的使用,因此逻辑表达式的含义被模糊了。
      • 您可以讨论这里是否真的需要开关。如果不超过 2 个案例,那么 if/else 会更合适。使用带有 true 的 switch'es 作为表达式总是可以争论(并且一直存在)。我写这个是因为标题包含“Switch 语句和类”。这是另一种选择。
      猜你喜欢
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      相关资源
      最近更新 更多