jQuery决策树,有比这更便携的方式吗?

时间:2014-09-05 01:58:03

标签: jquery

所以我正在构建一个决策树,它只是在一系列手风琴中从一个区域移动到另一个区域我只有两个影响出局的项目,但它们被用于大约9个不同的区域。

第一个是任务(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')} ;



        };

这一切正常我只是认为必须有一种更简单的方法,我已经使用了很多数据-target =&#34;&#34;和jQuerys .data()但是这个让我想知道是否有更简单的方法。

1 个答案:

答案 0 :(得分: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
};

虽然您仍然会使用相当多的代码,但这样您就不必为您创建的整个数值系统而烦恼。