2014-09-05 2 views
0

Итак, я строю дерево решений, и он просто перемещается из одной области в другую в aseries из аккордеонов. У меня есть только два элемента, которые влияют на выход, но они используются примерно в 9 разных областях.Дерево решений jQuery, есть ли более портативный способ, чем это?

Первый - это задача (a), а вторая - материал (b), и материалы могут меняться от одного раздела к другому.

Так prj1> а + Ь = с

но может быть много задач в рамках проекта, так

a1 + b1 = с a2 + b2 = с

и т.д.

Сейчас я использую задачу, которая расширит следующий аккордеон, который будет иметь новый набор переключателей, это должно быть реплицировано для каждого изменения задачи. Когда это изменится, я должен переписать мой jQuery, и, поскольку это много кода, я хотел бы, чтобы свежий набор глаз сказал мне, есть ли способ сделать это.

кнопки

My Radio выглядеть ...

<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

+0

После того, как я закончил это, я работал над другим деревом решений и использовал переключатель, вы были правы, он работал очень хорошо, и я смог развить что-то эффективное. – phlipinmi

Смежные вопросы