鍍金池/ 問(wèn)答/HTML/ 請(qǐng)問(wèn)這段代碼如何縮寫(xiě)?

請(qǐng)問(wèn)這段代碼如何縮寫(xiě)?

increaseDom:function(){

    var that=this;
    var NewOSelects=$('.NewOrders:eq(0)').find('select');    
    NewOSelects.each(function(i, el) {
        /*蠢的一筆,但是就是縮減不起來(lái),無(wú)法獲取到非自己的元素*/
        /*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");
            };
        }*/

        
    });
},
回答
編輯回答
熊出沒(méi)

你把HTML代碼貼出來(lái)和把業(yè)務(wù)邏輯說(shuō)明白,比看你寫(xiě)的代碼好理解得多。

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

建議你把整個(gè)片段連帶html結(jié)構(gòu)給出, 極有可能就是一句代碼的事兒

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

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

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

然后縮減實(shí)際上就是求補(bǔ)集

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
編輯回答
愛(ài)礙唉

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

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

看到這鐘代碼我腦子里面第一個(gè)閃現(xiàn)過(guò)的是 草擬嗎!懶得說(shuō)-

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

看得我頭皮發(fā)麻,你想要實(shí)現(xiàn)一個(gè)什么功能能一起貼出來(lái)嗎?就我能了解到的信息,你至少可以先用一個(gè)策略模式來(lái)改變這 滿屏 ifelse的困境,比如說(shuō):

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");
    }
    ....
}

//調(diào)用
handle["type_"+NewOSelects.eq(0).val()](NewOSelects);

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

2018年2月23日 02:57