为了账号安全,请及时绑定邮箱和手机立即绑定

请问这段代码如何缩写?

请问这段代码如何缩写?

扬帆大鱼 2019-05-23 18:16:45
increaseDom:function(){varthat=this;varNewOSelects=$('.NewOrders:eq(0)').find('select');NewOSelects.each(function(i,el){/*蠢的一笔,但是就是缩减不起来,无法获取到非自己的元素*//*if(NewOSelects.length>1){if(NewOSelects.eq(0).val()==1){NewOSelects.eq(1).find("option:eq(1)").attr("disabled","disabled");NewOSelects.eq(2).find("option:eq(1)").attr("disabled","disabled");NewOSelects.eq(0).find("option:eq(2)").attr("disabled","disabled");NewOSelects.eq(0).find("option:eq(3)").attr("disabled","disabled");}elseif(NewOSelects.eq(0).val()==2){NewOSelects.eq(1).find("option:eq(2)").attr("disabled","disabled");NewOSelects.eq(2).find("option:eq(2)").attr("disabled","disabled");NewOSelects.eq(0).find("option:eq(1)").attr("disabled","disabled");NewOSelects.eq(0).find("option:eq(3)").attr("disabled","disabled");}elseif(NewOSelects.eq(0).val()==3){NewOSelects.eq(1).find("option:eq(3)").attr("disabled","disabled");NewOSelects.eq(2).find("option:eq(3)").attr("disabled","disabled");NewOSelects.eq(0).find("option:eq(1)").attr("disabled","disabled");NewOSelects.eq(0).find("option:eq(2)").attr("disabled","disabled");};if(NewOSelects.eq(1).val()==1){NewOSelects.eq(0).find("option:eq(1)").attr("disabled","disabled");NewOSelects.eq(2).find("option:eq(1)").attr("disabled","disabled");NewOSelects.eq(1).find("option:eq(2)").attr("disabled","disabled");NewOSelects.eq(1).find("option:eq(3)").attr("disabled","disabled");}elseif(NewOSelects.eq(1).val()==2){NewOSelects.eq(0).find("option:eq(2)").attr("disabled","disabled");NewOSelects.eq(2).find("option:eq(2)").attr("disabled","disabled");NewOSelects.eq(1).find("option:eq(1)").attr("disabled","disabled");NewOSelects.eq(1).find("option:eq(3)").attr("disabled","disabled");}elseif(NewOSelects.eq(1).val()==3){NewOSelects.eq(0).find("option:eq(3)").attr("disabled","disabled");NewOSelects.eq(2).find("option:eq(3)").attr("disabled","disabled");NewOSelects.eq(1).find("option:eq(1)").attr("disabled","disabled");NewOSelects.eq(1).find("option:eq(2)").attr("disabled","disabled");};}*/});},
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

看得我头皮发麻,你想要实现一个什么功能能一起贴出来吗?就我能了解到的信息,你至少可以先用一个策略模式来改变这满屏ifelse的困境,比如说:
if(NewOSelects.eq(0).val()==1){
NewOSelects.eq(1).find("option:eq(1)").attr("disabled","disabled");
NewOSelects.eq(2).find("option:eq(1)").attr("disabled","disabled");
NewOSelects.eq(0).find("option:eq(2)").attr("disabled","disabled");
NewOSelects.eq(0).find("option:eq(3)").attr("disabled","disabled");
}elseif(NewOSelects.eq(0).val()==2){
NewOSelects.eq(1).find("option:eq(2)").attr("disabled","disabled");
NewOSelects.eq(2).find("option:eq(2)").attr("disabled","disabled");
NewOSelects.eq(0).find("option:eq(1)").attr("disabled","disabled");
NewOSelects.eq(0).find("option:eq(3)").attr("disabled","disabled");
}elseif(NewOSelects.eq(0).val()==3){
NewOSelects.eq(1).find("option:eq(3)").attr("disabled","disabled");
NewOSelects.eq(2).find("option:eq(3)").attr("disabled","disabled");
NewOSelects.eq(0).find("option:eq(1)").attr("disabled","disabled");
NewOSelects.eq(0).find("option:eq(2)").attr("disabled","disabled");
};
varhandle={
"type_1":function(NewOSelects){
NewOSelects.eq(1).find("option:eq(1)").attr("disabled","disabled");
NewOSelects.eq(2).find("option:eq(1)").attr("disabled","disabled");
NewOSelects.eq(0).find("option:eq(2)").attr("disabled","disabled");
NewOSelects.eq(0).find("option:eq(3)").attr("disabled","disabled");
}
....
}
//调用
handle["type_"+NewOSelects.eq(0).val()](NewOSelects);
其他的还可以继续优化,但太多了,写起来很烦就算了。。。自己想办法提取出能够合并的项,然后把变化的部分当成参数发过去就行了。。
                            
查看完整回答
反对 回复 2019-05-23
?
aluckdog

TA贡献1847条经验 获得超7个赞

我这做了两个假设一是NewOSelects只有0,1,2二是option只有1,2,3
不符合的话你再告诉我...
然后缩减实际上就是求补集
if(NewOSelects.length>1){
letvalue
value=NewOSelects.eq(0).val();
NewOSelects.not(':eq(0)').find(`option:eq(${value})`).attr("disabled","disabled");
NewOSelects.eq(0).find('option').not(`:eq(${value})`).attr("disabled","disabled");
value=NewOSelects.eq(1).val();
NewOSelects.not(':eq(1)').find(`option:eq(${value})`).attr("disabled","disabled");
NewOSelects.eq(1).find('option').not(`:eq(${value})`).attr("disabled","disabled");
}
                            
查看完整回答
反对 回复 2019-05-23
  • 2 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号