目前我有四个独立的部分:鞋底、衣领、衬里和舌头。在每个部分中都有选择材料的选项,下面的代码是其中两个部分的示例。
<div class="sole_panel container active">
<h3>sole</h3>
<div id="sole_leather" class="material-btn">leather</div>
<div id="sole_suade" class="material-btn">suade</div>
<div id="sole_nubuck" class="material-btn">nubuck</div>
</div>
<div class="collar_panel container">
<h3>collar</h3>
<div id="collar_leather" class="material-btn">leather</div>
<div id="collar_suade" class="material-btn">suade</div>
<div id="collar_nubuck" class="material-btn">nubuck</div>
</div>
我已经创建了 div,以便在单击它们时获取 id 并将其传递给隐藏输入标签的值。
<input id="sole" class="material-value" type="hidden" value="sole_leather">
我遇到的问题是,例如,如果我为 Sole 部分选择皮革,它会填充所有四个隐藏输入,如下面的代码所示。有没有一种简单的方法让隐藏的输入只适用于它相关的部分?
<div class="sole_panel container active"></div>
<input id="sole" class="material-value" type="hidden" value="sole_leather">
<div class="collar_panel container"></div>
<input id="collar" class="material-value" type="hidden" value="sole_leather">
<div class="lining_panel container"></div>
<input id="lining" class="material-value" type="hidden" value="sole_leather">
<div class="tongue_panel container"></div>
<input id="tongue" class="material-value" type="hidden" value="sole_leather">
我还使用 JavaScript 来遍历一组面板和材料
panelArray = ['sole','collar','lining','tongue'];
materialArray = ['leather','suade','nubuck'];
//loop over array to create selectors
for (x = 0; x < panelArray.length; x++) {
mtr = '';
clr = '';
var segments = panelArray[x];
//loop over materials
for (y = 0; y < materialArray.length; y++) {
var material = materialArray[y];
//console.log(material);
mtr += '<div class="material-btn" id="' + segments + '_' + material + '">' + material + '</div>';
}
container += '<div class="' + segments + '_panel container"><h3>' + segments + '</h3>';
container += mtr;
container += '<div class="colour-container">';
container += clr;
container += '</div>';
container += '</div>';
container += '<input id="' + segments + '" class="material-value" type="hidden">';
}
下面是将值传递给隐藏字段的代码
$('.material-btn').on('click', function() {
$('.material-btn').removeClass('select');
$(this).addClass('select');
// passes material type selction to hidden field
var value = $(this).attr('id');
var result = $('.material-value').attr('value', value);
//console.log(result);
});