javascript - 在JQuery中使用switch语句时如何将元素数据传递到case中?

标签 javascript jquery switch-statement

我的应用程序中有一个选项卡组件,我编写了一个在选项卡之间切换的函数。首先我想测试一下这是否有效。我过去曾尝试过使用 if 语句,效果很好(请参阅注释代码)。现在我想用 switch 语句尝试一下。这是我的函数代码:

switchAdvancedView(elem) {
    //if (elem.data('id') === 'recentview') {
    //    alert('view1');
    //}
    //else if (elem.data('id') === 'myview') {
    //    alert('view2');
    //}
    //else if (elem.data('id') === 'systemview') {
    //    alert('view3');
    //}
    switch (elem) {
        case elem.data('id') === 'recentview':
            alert('view 1');
            break;
        case elem.data('id') === 'myview':
            alert('view 2');
            break;
        case elem.data('id') === 'myview':
            alert('view 3');
            break;
        default:
    }
}

问题是当我单击选项卡时它不会触发警报功能。

我使用过这个来源:

链接:https://www.sitepoint.com/jquery-switch-statement/

教程仅显示硬编码值。

如何将 element.data id 传递给 switch 语句的 case?

最佳答案

默认开关格式如下所示:

function switchAdvancedView(text) {
  switch (text) {
    case 'recentview':
      alert('view 1');
      break;
    case 'myview':
      alert('view 2');
      break;
    case 'myview':
      alert('view 3');
      break;
    default:
  }
}

switchAdvancedView("recentview");

您还可以有更高级的条件,即:

function switchAdvancedView(text, otherFlag) {
  switch (text) {
    case otherFlag ? text : null :
      alert("OtherFlag is true");
      break;
    case 'recentview':
      alert('view 1');
      break;
    case 'myview':
      alert('view 2');
      break;
    case 'myview':
      alert('view 3');
      break;
    default:
  }
}

switchAdvancedView("recentview", true);

但是要使上面的示例正常工作,您需要确保这些类型的条件位于顶部,以便开关位于顶部(除非您想要特定的顺序)。

虽然我个人更喜欢这种格式而不是 switch 语句:

function switchAdvancedView(text) {
  ({
    recentview: () => alert("view 1"),
    myview: () => alert("view 2"),
    myview2: () => alert("view 3")
  }[text] || (_ => _))();
}

switchAdvancedView("recentview");

关于javascript - 在JQuery中使用switch语句时如何将元素数据传递到case中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57412699/

相关文章:

javascript - 拉伸(stretch)导航栏

javascript - 如何动态获取浏览器的高度和宽度?

jquery - 原型(prototype)转化为jqu​​ery

jquery css高度设置无法正常工作

php - 为什么在call_user_func_array()之前使用switch语句

java - java中Switch语句中Integer类型的使用

javascript - Wow.js 与 webpack 和 react

javascript - vuetify 表页面不工作并重置回 1

jquery - 使用 jquery 使背景可点击

java - 无需切换即可处理 View 的 ID