Итак, я строю дерево решений, и он просто перемещается из одной области в другую в 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(), но это меня заставило задаться вопросом, есть ли более простой способ.
Похож на приличную идею, мне придется заглянуть в переключатель и как его использовать, и попытаться применить его к моему делу. Спасибо! – phlipinmi
После того, как я закончил это, я работал над другим деревом решений и использовал переключатель, вы были правы, он работал очень хорошо, и я смог развить что-то эффективное. – phlipinmi