У меня есть несколько HTML Select, которые я хочу клонировать и вставить в новую строку внутри новых разделов Bootstrap row и col . Фрагмент как под:
$("#subBtn").click(function(){
var ifType = $("#pcker").clone();
var ifType2 = $("#pcker2").clone();
$("#scontainer").append("<div class='row'><div class='col'>");
$("#scontainer").append(ifType);
$("#scontainer").append("</div>");
$("#scontainer").append("<div class='col'>");
$("#scontainer").append(ifType2);
$("#scontainer").append("</div></div>");
})
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div class="row">
<div class="row">
<div class="col">
<select class="selectpicker" data-live-search="true" id="pcker">
<option value='gag'>raps</option>
<option value='gag'>Experiments</option>
<option value='gag'>value</option>
<option value='gag'>select</option>
<option value='gag'>bootstrap</option>
</select>
<select class="selectpicker" data-live-search="true" id="pcker2">
<option value='gag2'>raps</option>
<option value='gag2'>Experiments</option>
<option value='gag2'>value</option>
<option value='gag2'>select</option>
<option value='gag2'>bootstrap</option>
</select>
<button class="btn" type="button" id="subBtn" value="test">Add Button</button>
</div>
</div>
<div class="row" id="scontainer"></div>
</div>
</body>
Проблема в том, что вместо того, чтобы получать новые Select внутри строки и столбцов div, они отображаются вне div.
Как вставить новый выбор, чтобы HTML выглядел как
<div class="row"><div> class="col"><select><option></option></select></div><div class="col"><select><option></option></select></div></div>
2 ответа
Вам необходимо добавить div
как целый элемент (открывать и закрывать теги), а не по частям. после добавления div нужно добавить поля выбора внутри необходимого div
ПРИМЕЧАНИЕ. Я добавил логику для получения уникальных идентификаторов клонированных элементов.
См. ниже
var id1=0;
var id2=0;
$("#subBtn").click(function(){
var ifType = $("#pcker").clone();
var ifType2 = $("#pcker2").clone();
var $row = $("<div class='row'></div>");
$("#scontainer").append($row);
var $col1 = $("<div class='col'></div>");
var $col2 = $("<div class='col'></div>");
$row.append($col1);
$row.append($col2);
$col1.append(ifType);
$col2.append(ifType2);
// change id of cloned element just to have unique ids
$col1.attr('pcker'+id1);
$col2.attr('pcker1'+id2);
id1++;
id2++;
});
Хорошо, попробуйте этот способ:
$("#subBtn").click(function(){
var ifType = $(".pcker").eq(0).clone(true);
var ifType2 = $(".pcker2").eq(0).clone(true);
$("#scontainer").append("<div class='row'><div class='col'>");
$("#scontainer").find('.col').last().append(ifType);
$("#scontainer").find('.col').last().append(ifType2);
$("#scontainer").find('select').last().append("</div></div>");
})
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div class="row">
<div class="col">
<select class="selectpicker pcker" data-live-search="true">
<option value='gag'>raps</option>
<option value='gag'>Experiments</option>
<option value='gag'>value</option>
<option value='gag'>select</option>
<option value='gag'>bootstrap</option>
</select>
<select class="selectpicker pcker2" data-live-search="true">
<option value='gag2'>raps</option>
<option value='gag2'>Experiments</option>
<option value='gag2'>value</option>
<option value='gag2'>select</option>
<option value='gag2'>bootstrap</option>
</select>
<button class="btn" type="button" id="subBtn" value="test">Add Button</button>
</div>
</div>
<div id="scontainer"></div>
</body>
Посмотрите, я заменил атрибут id
на class
, потому что, как я уже говорил, id
должен быть уникальным.
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.