鍍金池/ 問答/HTML/ 請問這段代碼如何縮寫?

請問這段代碼如何縮寫?

increaseDom:function(){

    var that=this;
    var NewOSelects=$('.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");
            }else if(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");
            }else if(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");
            }else if(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");
            }else if(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");
            };
        }*/

        
    });
},
回答
編輯回答
熊出沒

你把HTML代碼貼出來和把業(yè)務邏輯說明白,比看你寫的代碼好理解得多。

2017年2月11日 00:01
編輯回答
枕頭人

建議你把整個片段連帶html結構給出, 極有可能就是一句代碼的事兒

2018年6月9日 00:00
編輯回答
墨小羽

我這做了兩個假設
一是NewOSelects只有0,1,2
二是option只有1,2,3

不符合的話你再告訴我...

然后縮減實際上就是求補集

if (NewOSelects.length > 1) {
  let value
  
  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");
}
2018年5月6日 22:06
編輯回答
愛礙唉

樓主你多動動腦子啊,你就不能自己封裝一個方法嗎?兄弟,看的都不爽

2017年1月20日 23:08
編輯回答
初心

看到這鐘代碼我腦子里面第一個閃現過的是 草擬嗎!懶得說-

2017年6月16日 03:56
編輯回答
青裙

看得我頭皮發(fā)麻,你想要實現一個什么功能能一起貼出來嗎?就我能了解到的信息,你至少可以先用一個策略模式來改變這 滿屏 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");
}else if(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");
}else if(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");
};
var handle = {
    "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);

其他的還可以繼續(xù)優(yōu)化,但太多了,寫起來很煩就算了。。。自己想辦法提取出能夠合并的項,然后把變化的部分當成參數發(fā)過去就行了。。

2018年2月23日 02:57