我使用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
}));
});
在这种情况下,括号的最后一个逗号分隔值将是要分配的值。