if (product.goodsClass() == 1) {//产品型 // 将字符串按照逗号分割成数组 var values = product.deliveryMode.split(","); $('input[name="deliveryMode"]').each(function () { // 判断当前复选框的 value 是否在给定的值中出现 if ($.inArray($(this).val(), values) !== -1) { // 如果出现,则将它选中 $(this).prop('checked', true); } }); } else if (product.goodsClass() == 2) {//服务型 var values = product.serviceType.split(","); $('input[name="serviceType"]').each(function () { // 判断当前复选框的 value 是否在给定的值中出现 if ($.inArray($(this).val(), values) !== -1) { // 如果出现,则将它选中 $(this).prop('checked', true); } }); }怎么优化
时间: 2024-02-10 09:13:21 浏览: 65
可以将这两个if语句合并成一个,避免重复的代码,具体实现可以使用一个对象来存储需要遍历的复选框的name和对应的值的属性名,遍历这个对象,对每个name对应的复选框进行选中操作。以下是示例代码:
```javascript
var checkboxes = {
'deliveryMode': 'product.deliveryMode',
'serviceType': 'product.serviceType'
};
for (var name in checkboxes) {
if (product.goodsClass() == 1 && name == 'deliveryMode' || product.goodsClass() == 2 && name == 'serviceType') {
var values = eval(checkboxes[name]).split(",");
$('input[name="' + name + '"]').each(function () {
if ($.inArray($(this).val(), values) !== -1) {
$(this).prop('checked', true);
}
});
}
}
```
其中,`eval()` 方法可以动态地将字符串作为代码执行,这里用它来获取对应属性的值。使用 `for...in` 循环遍历对象的属性名,如果当前属性名符合条件,则获取对应的值,然后选中对应的复选框。
阅读全文