我有下一个代码:
<div class="form-group question" id="encuesta[ENC_ID]" value="ENC_ID" name="encuesta" data-encuesta_id="ENC_ID" style="border-radius: 3px;border-color: #5e5e5e;border: 1px;
border-style: solid;padding: 4px 4px 4px 4px;">
<div class="row">
<div class="col-lg-11">
<h5>Pregunta <div id="preg_num" name="preg_num" class="preg_num">ENC_ID</div></h5><br>
</div>
<div class="col-lg-1">
<i class="fa fa-times" aria-hidden="true" onclick="deletePreg(ENC_ID);"></i>
</div>
</div>
<div class="row">
<div class="col-lg-2">
<label for="enc_nombre">Tipo de pregunta: </label>
</div>
<div class="col-lg-3">
<select class="form-control" onchange="cambioOpc(ENC_ID);" id="tipo[ENC_ID]" name="question_type[ENC_ID]">
<option value="input" selected>Texto abierto</option>
<option value="radio">Seleccionar una</option>
<option value="checkbox">Seleccionar varias</option>
</select></div>
此代码用于创建问题并添加用户需要的问题数量,以及页面何时第一次加载包含文本&#34; ENC_ID&#34;的所有html。由id更改,问题是当用户删除某个问题时,我不知道如何更改select的id以将相同的id设置为具有主div &#34; data-encuesta_id& #34;
删除问题的文件的JS:
function deletePreg(idENC){
$('div.question').each(function(i, obj)
{
$(obj).find('.preg_num').text(i + 1);
pregNum = i + 1;
if(idENC == $(obj).data('encuesta_id')){
$(obj).remove();
}
});
reenumerarPreguntas();}
function reenumerarPreguntas(){
$('div.question').each(function(i, obj){
$(obj).find('.preg_num').text(i + 1);
pregNum = i + 1;
$(obj).data('encuesta_id', i+1);
});}
答案 0 :(得分:1)
<强>建议:强>
在<select>
中,将“tipo”移动为一个类并删除ID。将ENCID作为数据属性。像这样:
<select class="form-control tipo" onchange="cambioOpc(ENC_ID);" data-enc-id="[ENC_ID]" name="question_type[ENC_ID]">
现在您可以引用select by class + data属性值并改为更改数据属性。
示例: $('.tipo[data-enc-id="'+idENC+'"]').data('enc-id', new_enc_id);
如何更改循环中的ID :
如果您确实必须更改ID,您可以这样:
示例:强>
$('#tipo'+idENC).prop('id', 'tipo'+new_enc_id_here);
<强> OR
强>
$('#tipo'+idENC).attr('id', 'tipo'+new_enc_id_here);