2014-09-05 35 views
0

因此,我正在制定一個決策樹,它只是從一個區域移動到另一個區域,我只有兩個項目會影響到出來,但它們被用在9個不同的區域。jQuery決策樹,是否有比這更便攜的方式?

第一個是任務(a),第二個是材料(b),材料可以從一個部分更改爲下一個部分。

所以prj1> A + B = C

但可以在一個項目中有很多任務,所以

A1 + B1 = C A2 + B2 = C

現在我正在使用該任務將展開下一個手風琴,該手風琴將具有一組新的單選按鈕,每次任務更改選擇時都必須複製該按鈕。當這個改變時,我不得不重寫我的jQuery,並且因爲這是很多代碼,我希望有一組新的眼睛告訴我是否有這樣做的方式。

我的單選按鈕看起來像這樣...

<form id="first-metalE"> 
    <input class="first-metal" type="radio" name="firstE" value="1"> Copper<br> 
    <input class="first-metal" type="radio" name="firstE" value="2"> Brass<br> 
    <input id="alum-e" type="radio" name="firstE" value="8"> Aluminum<br> 
    <input id="stain-e" type="radio" name="firstE" value="4"> Stainless Steel 
    </form> 


    <form id="second-metalE"> 
    <input class="second-metal" type="radio" name="secondE" value="1"> Copper<br> 
    <input class="second-metal" type="radio" name="secondE" value="2"> Brass<br> 
    <input id="alum-e-two" type="radio" name="secondE" value="8"> Aluminum<br> 
    <input id="stain-e-two" type="radio" name="secondE" value="4"> Stainless Steel 
    </form> 

和我的jQuery看起來像這樣...

 function setMetalElectric() { 

     // get value from the first radio button group and convert to number 
     var firstmtlE = $('input[name=firstE]:checked', '#first-metalE').val()*1; 

     // get value from the second radio button group and convert to number 
     var secondmtlE = $('input[name=secondE]:checked', '#second-metalE').val()*1;  

     // add results from first and second radio group  
     var mtlselectionE = firstmtlE + secondmtlE; 

     // P1 
     if ((mtlselectionE == 2) || (mtlselectionE == 3) || (mtlselectionE == 4)) { 

     alert(' directs to E1 '); 

     $('#metal-select').data('toggle', '#elec-cat-copperBrass'); 

     $('.prd-back').data('toggle', '#elec-cat-copperBrass'); 

     $('.attr-bck-to-mtl').data('toggle', '#electric-mtl'); 

     // P2 
     } else if ((mtlselectionE ==5) || (mtlselectionE ==6) || (mtlselectionE ==8)) { 

     alert(' directs to E2 '); 
     $('#metal-select').data('toggle', '#elec-cat-stainles'); 

     $('.plum-prd-back').data('toggle', '#elec-cat-stainles'); 

     $('.attr-bck-to-mtl').data('toggle', '#electric-mtl'); 

     // P3 
     } else if ((mtlselectionE ==9) || (mtlselectionE ==10) || (mtlselectionE ==16)) { 

     alert(' directs to E3 '); 

     $('#metal-select').data('toggle', '#elec-cat-alum'); 

     $('.plum-prd-back').data('toggle', '#elec-cat-alum'); 

     $('.attr-bck-to-mtl').data('toggle', '#electric-mtl'); 

     // errors 
     } else if ((mtlselectionE ==12)) { 

     alert(' Error '); 

     } else if ((mtlselectionE !=2,3,4,5,6,8,9,10,16)) { 

     alert(' You didnt select two metals '); 

     } else { alert('something is wrong')} ; 



     }; 

這是所有工作,我只是想,必須有一個更簡單的方法,我已經使用了很多data-target =「」和jQuerys .data(),但是這個讓我想知道是否有更簡單的方法。

回答

1

這看起來像是使用switch聲明的好機會。也許是這樣的:

switch (expression){ 
    case "Copper": 
    //relevant code 
    break; 
    case "Brass": 
    //relevant code 
    break; 
    case "Aluminium": 
    //relevant code 
    break; 
    case "Stainless Steel": 
    //relevant code 
    break; 
    default: 
    //error handling 
}; 

雖然你仍然會擁有相當多的代碼,這樣你不會有你所創建的整數值系統打擾。

+0

看起來像一個體面的想法,我將不得不看看開關,以及如何使用它,並嘗試應用到我的情況。謝謝! – phlipinmi 2014-09-05 14:06:40

+0

完成此工作後,我工作了另一個決策樹並使用了開關,您說得對,它工作得非常好,我能夠開發出高效的工作。 – phlipinmi 2014-09-28 23:59:08