【问题标题】:Multiple conditions in jquery ternary conditional operatorjquery三元条件运算符中的多个条件
【发布时间】:2013-01-14 01:09:35
【问题描述】:

我想在 jquery 中编写三元条件运算符,其中条件由 jquery 变量设置。我的脚本切换类仅适用于特定条件。在我的脚本变量中来自其他设置。

jquery:

<script type="text/javascript">
$(document).ready(function() {
  $("#my_div")
    .removeClass("horizontal vertical")
    .addClass( my_color == 'red'  ? 'horizontal' : 'vertical');
});
</script>

my_color 是 jquery 变量,它可能一次只有一个来自 red,green,blue,black,white or silver 的值。

如果my_color 是红色、蓝色或绿色,我想将类设置为水平,而对于其他三个值,我想将类设置为垂直。谁能帮我为上面的 jquery 编写简化的三元运算符?

【问题讨论】:

  • IMO 这已经很简单易读了。我认为没有理由重构您的三元组
  • 但这只是为一个条件 my_color == 'red' 设置的。
  • 仅供参考:您正在编写 JavaScript 三元运算符,而不是 jQuery。 jQuery 是用 JavaScript 编写的库。 jQuery 不是一种语言。
  • 感谢@Jan 提供的宝贵信息。

标签: javascript jquery ternary-operator conditional-operator


【解决方案1】:

在运算符的条件部分使用或运算符。你会的

<script type="text/javascript">
  $(document).ready(function() {
    $("#my_div")
        .removeClass("horizontal vertical")
        .addClass( my_color == 'red' ||  my_color == 'blue' ||  my_color == 'green'  ? 'horizontal' : 'vertical');
  });
</script>
 $("#my_div")

如果你有很多颜色,你可以将它们放在数组中并在条件下使用它。

 $("#my_div")
 .removeClass("horizontal vertical")
 .addClass( ['red', 'blue', 'green', 'gray'].indexOf(my_color) != -1 ? 'horizontal' : 'vertical');

【讨论】:

  • 感谢您的回答。这是像你一样写作的好习惯吗?
  • 对您的答案的可能更改可能是使用 $.inArray,而不是多个 or 语句。即addClass($.inArray(my_color, ['red', 'blue', 'green']) ? 'horizontal' : 'vertical'),如果您愿意,可以更轻松地添加更多颜色。
  • 抱歉,这是我的错...addClass($.inArray(my_color, ['red', 'blue', 'green']) !== -1 ? 'horizontal' : 'vertical') - 我一直忘记$.inArray 返回的是位置,而不是布尔值。示例:jsfiddle.net/gRoberts/XRuf5
  • 谢谢 Gavin,你太好了,由于网络问题,我无法参与讨论,很抱歉,我更新了我的答案。
  • 感谢@Gavin /@Adil 的贡献。您的回答对我来说是更好的答案。
猜你喜欢
  • 2012-09-14
  • 2011-06-26
  • 2013-06-06
  • 2023-04-11
  • 2015-08-29
  • 2018-03-06
  • 2020-05-18
  • 2016-11-02
  • 2021-11-20
相关资源
最近更新 更多