如何为每个三元大小写添加超过 1 个操作 jQuery .append($( "<option/>" , {...})?



我使用jQuery将多个option元素添加到一个select元素中。根据data的值,选项的文本和是否禁用选项是不同的。将选项元素添加到选择元素的顺序应按时间顺序排列,因为它们是交付选项。

理想情况下,我想添加if-else语句,但这不起作用。条件三元运算符确实有效,但它似乎只适用于每种情况下的单个运算。

示例:

特定选项的默认值为"8/1 tussen 14:00-15:00 | 4.95欧元"如果data.response小于0,则应为"8/1 tussen 14:00-15:00|Vol",并且应禁用该选项。否则,它应该返回该选项的已启用默认值。

以下是我目前正在尝试的:

$.each(timeSlotsObj, function(key, value) {
  var option_date = value.split(" ")[0].replace('/', '-'),
      option_slot = value.split(" ")[2];
  $.get("http://<REDACTED>/availability/" + selected_retailer_id + "/" + option_date + "/" + option_slot, function(data) {
    delivery_time_element.append($("<option/>", {
        value: key,
        text: data.response < 1 ? (
          new_value = value.split(' ')
          new_value[4] = 'Vol'
          new_value.join(' ')
        ) : value,
        disabled: data.response < 1 ? true : false
    }));
  });
});

但这会为返回一个Uncaught SyntaxError: Unexpected identifier

new_value[4] = 'Vol'

我还能尝试什么?

我强烈建议将该逻辑移到一个单独的函数中。

$.get("http://<REDACTED</availability/" + selected_retailer_id + "/" + option_date + "/" + option_slot, function(data) {
  var vol = function(val) {
    var parts = value.split(' ');
    parts[4] = "Vol";
    return parts.join(' ');
  };
  delivery_time_element.append($("<option/>", {
      value: key,
      text: data.response < 1 ? vol(value) : value,
      disabled: data.response < 1 ? true : false
  }));
});

这使得代码可读性更强,更易于理解。

您应该在每个操作后添加一个逗号,如下所示:

$.get("http://<REDACTED</availability/" + selected_retailer_id + "/" + option_date + "/" + option_slot, function(data) {
  delivery_time_element.append($("<option/>", {
      value: key,
      text: data.response < 1 ? (
        new_value = value.split(' '), // <<<<
        new_value[4] = 'Vol', // <<<<
        new_value.join(' ')
      ) : value,
      disabled: data.response < 1 ? true : false
  }));
});

在这种情况下,括号的最后一个逗号分隔值将是要分配的值。

相关内容

最新更新